什么是递归
递归指计算机程序在运行时方法、函数调用自身的一种现象,适用于需要不断的深层次推导才能获得的结果,例如一段菲波那切数列,1,1,2,3,5,8... ...,每个数等于前两个数相加,求第7个数是什么,递归过程如下:
初始值:1,1
fn7 = fn6 + fn5
fn5 = fn4 + fn3
fn3 = fn2 + fn1 = 2
fn4 = fn3 + fn2 = 2+1 = 3
fn5 = fn4 + fn3 = 5
到此fn5计算结束,
计算fn6:
fn6 = fn5 + fn4
fn5 = fn4 + fn3
... ...
fn6 = 5+3 = 8
fn7 = 8+5 = 13
代码实现
def feibonaqie(n):
if n ==1:
return 1
elif n == 2:
return 1
else:
return feibonaqie(n-1) + feibonaqie(n-2)
print(feibonaqie(7))
E:\DataAnalysis\tools\python3\python.exe E:/DataAnalysis/tools/python3/project/SuanFa/recursion/recursion.py
13
Process finished with exit code 0
小结
用递归实现菲波那切数列,十分简洁,正如一句著名的话:如果使用循环,程序的性能可能更高;如果使用递归,程序可能
更容易理解。如何选择要看什么对你来说更重要
递归还有两个条件,一个是基线条件,一个是递归条件,基线条件保证递归何时退出结束,如上面的n=1 和 n=2就是两个基线条件,而最后的else是递归条件,是如何调用自己的逻辑。