对于斐波那契数列,fibo(n)=fibo(n-1)+fibo(n-2)
以下是斐波那契数列的两种写法
递归实现
def fibo(n):
if n<=0:
return 0
elif n==1:
return 1
else:
return fibo(n-1)+fibo(n-2)
#相对于第一种写法,代码长了一些,但是递归次数少了许多
如果n为30左右的时候代码1执行时间比代码2执行时间长很多
动态规划实现
def Fibo(n):
#创建一个长度为n+1的列表来记录斐波那契数列的每一个值
sum_list=[0]*(n+1)
def fibo(sum_list,n):
#如果所求值存在于列表中,省去递归直接进行计算
if sum_list[n]!=0:
return sum_list[n]
#利用递归
if n<=2:
sum_list[n]=1
else:
sum_list[n]= fibo(sum_list,n-1)+fibo(sum_list,n-2)
return sum_list[n]
return fibo(sum_list,n)