斐波那契数列:
一个数列中前两个数相加等于第三个数:(据说在炒股中经常使用)
这里需要使用到递归;在python中,在函数体中调用自身的行为就是递归,python不允许无限递归,所以必须给一个出口。
一个简单的递归需求:
列出2^1-2^32之间的所有值
代码段:
a = 2**32 def fun(n): if n < a: result = fun(n*2) print (result) return n fun(1)
解析——
1,定义一个函数fun(n),这个函数中进行了一次if判断,判断给定的参数是否小于a,(a=2*32)
2,如果条件满足,则定义一个变量 result,这个变量调用了函数fun(),这样就进入了递归,并且传递的参数是n*2
3,经过多次递归后,会走到2147483648*2,结果就是2*32 = 4294967296,这样if语句就不成立了,递归终止。
通过这个原理,我们就可以用递归来求斐波那契数列了:
代码段:
def fun(arg1,arg2,stop): arg3 = arg1 + arg2 print(arg3) if arg3 < stop: fun(arg2,arg3,stop) if __name__ == '__main__': fun(0,1,30)
结果:
1
2
3
5
8
13
21
34
这个函数被递归了7次,第七次的时候arg3 = 34,导致if语句不成立,递归被终结。