0
点赞
收藏
分享

微信扫一扫

关于递归和fibonacci数列

非衣所思 2022-02-16 阅读 92

python中,经常用fibonacci数列来解释递归,但理解起来总会有那么一段迷糊期。其实拆开来看,也不复杂。

def fibonacci(n):
    if n==1 or n==2:
        return 1
    else:
        return fibonacci(n-1)+fibonacci(n-2)

print(fibonacci(5))

解析:

1.把参数“5”代入fibonacci(n)函数,因为不等1或2,所以运行else,返回:执行fibonacci(4)+fibonacci(3),即要求执行两个函数。.

2.1 执行fibonacci(4)函数:

2.1.1 因为参数为4,仍然不等1或2,所以继续运行else,返回:执行fibonacci(3)+fibonacci(2)。其中fibonacci(2)的结果是1

2.1.1.1 执行fibonacci(3),继续不等于1或2,所以还是运行else,返回:执行fibonacci(2)+fibonacci(1)——>fibonacci(3)的结果是2

由此,fibonacci(4)的结果是3(1+2)

2.2 执行fibonacci(3)函数:

由此可知,结果为2.。

3.回到fibonacci(5),得到结果:fibonacci(4)+fibonacci(3)=3+2=5

 递归能够计算该数列,但因为“中间环节”太多,n值稍大一点(比如50),计算时长就很大。所以,如果单纯想要计算一下数据,不如直接一些为好——再大的数值也是秒算

a,b,i=0,1,1
for n in range(100):
    print("N项为:",i,"Fi值为:",b)
    a, b ,i = b, a+b, i+1
举报

相关推荐

0 条评论