递归
递归的定义
递归的简单例子
这是一个简单的例子,也表明了递归的一些特征,比如递归有出口,这里就是n==0,还有调用自己,调用自己给人的感觉是想再找数列an与an-1…等的关系,递归的的执行就像我们不断的把an展开直到他变成a0
,a1什么的,但是不能这样简单的认为。
在看几个例子:
这两个例子就像我们不断地把调用自己的代码展开展到出口,从最初的从头到尾执行。
再看一个
递归原理
这说明递归式可以用栈来代替的
经典例子
找准an,an-1代表的意义
递归正确性的证明
就是数学归纳法
这个也可以用数列来做an=2xan-1 +1;a1=1;
递归化成非递归
蓝色虚线表示入栈,红色虚线代表出栈,这就是为什么代码后面一坨出栈的代码。
进一步化简(既然都是不断回去,那么为什么不整个循环代替):
看个例子:
看个练习: