上面给出的求取斐波那契数列第n项的方法,利用列表可以将前20项输出.但是递归算法重复计算太多,基本计算到第40项就卡住了,太浪费资源,利用列表记录n-1项,可以很大程度上减少重复计算量.利用字典记录也可以实现相同运算.
n=int(input('请输入一个整数:'))
def fab(n):
if n<1:
print('输入有误!')
return-1
if n==1or n==2:
return1
else:
return fab(n-1)+fab(n-2)
result=[]
for i in range(1,n+1):
result.append(fab(i))
print(result)
n=int(input('请输入一个整数:'))
dic ={0:0,1:1}
def fib(n):
if n in dic:
return dic[n]
else:
temp = fib(n-1)+fib(n-2)
dic[n]= temp
return temp
for i in range(n):
print(fib(i+1),end=" ")