一: 一个小孩一次可以走1/2/3级台阶, 10级台阶可以有多少种方法
10 # 动态规划
11 def steps(n: int, m={}) -> int:
12 if n < 0:
13 return 0
14 elif n == 0:
15 return 1
16 else:
17 try:
18 return m[n]
19 except:
20 m[n] = steps(n-1) + steps(n-2) + steps(n-3)
21 return m[n]
说明 : 将计算好的结果存到字典,需要再取,避免反复迭代运行函数 -- 以空间换时间
网友评论