今天看python教程看到一个计算斐波那契数列的例子,代码如下 :
def fib(n):
if n==0 or n==1:
return 1
else:
return fib(n-1)+fib(n-2)
这是用递归的方法,代码很简单,测试函数跑下结果如下图。
但是要跑30个数以上,电脑的运行就非常慢了。没太看明白,好像是这种递归法每次都要从头算一遍。到35以上的时候,基本都要等上10几秒才能有结果,再大的数就更慢,如果显示第100位,估计要几个小时。
我用另一个方法,如下:
def fib1(n):
a=[1,1]
if n==1 or n==2:
return 1
else:
for i in range(n-1):
a.append(a[-1]+a[-2])
print(a[-2])