# 1 1 2 3 5 8
# 暴力递归 已知数学公式,只需要直接写明base case 然后写明条件即可
def func01(n):
if n == 1:
return 1
if n == 2:
return 1
return func(n-1) + func(n-2)
# 记忆化搜索
# 观察暴力递归,只有一个变量,为n
# 那么画图看看重复解,有重复解,符合动态规划之记忆化搜索
# 这个时候做一个数组,后一个值是前两个值的和
# error:忘记处理边界
def func(n):
dp = [0] * n # 声明一个列表的长度忘了,回头找到补上
dp[0] = 1
dp[1] = 1
for i in range(2,n):
dp[i] = dp[i-1] + dp[i-2]
return dp[n-1]
# 严格表结构,这种情况下依赖关系其实已经很明确了,符合有的时候记忆化搜索~严格表结构
if __name__ == '__main__':
print(func(6))
10-28
739
04-13
08-24
581