动态规划:
def fib1(n):
a,b = 0,1
c = 0
for i in range(2,n+1): #执行次数
c=a+b
a=b
b=c
return c
或者使用列表:
def fib2(n):
nums=[0,1]
for i in range(2,n+1):
nums.append(nums[i-1]+nums[i-2])
print(nums)
return nums[-1]
对比普通方法(如下)运行时间缩短了非常多,从O(2^n)变为O(n)
def fib3(n):
if n <= 2:
return 1
else:
return fib(n-1) + fib(n-2)