将经典楼梯问题考虑为“戴维斯在他的房子里有许多楼梯,他喜欢一次爬每一个楼梯 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 个值(想象一下递归树)。我认为这是自下而上的。这个对吗?