【发布时间】:2019-11-05 13:23:19
【问题描述】:
将经典楼梯问题考虑为“戴维斯在他的房子里有许多楼梯,他喜欢一次爬每一个楼梯 1、2 或 3 级。作为一个非常早熟的孩子,他想知道有多少种方式到达楼梯的顶部。”
我的方法是使用递归作为记忆化
# TimeO(N), SpaceO(N), DP Bottom Up + Memoization
def stepPerms(n, memo = {}):
if n < 3:
return n
elif n == 3:
return 4
if n in memo:
return memo[n]
else:
memo[n] = stepPerms(n - 1, memo) + stepPerms(n - 2 ,memo) + stepPerms(n - 3 ,memo)
return memo[n]
我想到的问题是,这个解决方案是自下而上还是自上而下。我的处理方法是,因为我们一直向下计算上 N 个值(想象一下递归树)。我认为这是自下而上的。这是正确的吗?
【问题讨论】:
标签: algorithm topdown bottom-up