# 子问题的重复计算
def fibonacci(n):
if n == 1 or n == 2:
return 1
else:
return fibonacci(n - 1) + fibonacci( n - 2)
# 动态规划 (DP) 的思想 --> 最优子结果 (递推式) + 重复子问题
def fibonacci_no_rec(n):
f = [0, 1, 1]
if n > 2:
for i in range(n - 2):
num = f[-1] + f[-2]
f.append(num)
return f[n]