# 取斐波那契数列第 n 项也可不必用递归
# 非递归算法求解第n项数斐波那契数列
a, b, i =0,1,0
result =[]
n =int(input('输入一个大于 0 的整数: '))
while i < n:
result.append(b)
a, b = b, a+b
i +=1
print(result[n-1])
关于递归和两个变量计算斐波那契:
import time
#计算递归斐波那契时间消耗
n=int(input('请输入一个整数:'))
start = time.time()
def fab(n):
if n<1:
print('输入有误!')
return-1
if n==1or n==2:
return1
else:
return fab(n-1)+fab(n-2)
print(fab(n))
end= time.time()
print("运行时间:%.2f秒"%(end-start))
#计算两个变量时间消耗
start = time.time()
a, b =0,1
cn =1
while cn < n:
a, b = b, a+b
cn +=1
print(b)
end= time.time()
print("运行时间:%.2f秒"%(end-start))
结果如下:
请输入一个整数:35
9227465
运行时间:3.37秒
9227465
运行时间:0.00秒
大于 30 以后两种方法的时间对比就很明显了,所以教程的方法还是省时省空间的。