- eg:0,1,1,2,3,5,8,13.......
- 计算斐波那契数列三种方法
2.1 递归
def f(n):
if n==0:
return 0
elif n==1:
return 1
else:
return f(n-1)+f(n-2)
for i in range(10):
print("f({}):{}".format(i,f(i)))
2.2 传入字典,计算过的值先存储,下次计算就会快
def a(n,memo={}):
if n in memo:
return memo[n]
if n==0:
return 0
elif n==1:
return 1
else:
ans = f(n-1)+f(n-2)
memo[n]=ans
return ans
2.3 @cache 将部分数据存储在内存中,以便下次能够更快地访问这些数据
from functools import lru_cache
@lru_cache()
def f(n):
if n==0:
return 0
elif n==1:
return 1
else:
return f(n-1)+f(n-2)
2.4 上面都是TOP_DOWN,下面是DOWN_TOP的方法
def f(n):
a,b=0,1
for _ in range(n): #O(N),O(1)
a,b=b,a+b
return a
配合这个系列做的视频笔记 第6课 教媳妇编程: 计算斐波那契数列的三种方法_哔哩哔哩_bilibili