我正在练习用while循环替换递归,但我陷入了以下问题。
如果一次只能走1或2层楼梯,可以用多少种方法上楼梯?
递归解决方案非常简单:
def stairs(n):
if n <= 1:
return 1
else:
return stairs(n-2) + stairs(n-1)
我觉得迭代程序的结构应该是这样的:
def stairs_iterative(n):
ways = 0
while n > 1:
# do something
ways +=1
return ways
但是我不知道我需要在#do something部分中添加什么。有人能帮我吗?伪代码很好!
这相当于动态编程的自上而下(递归)方法与自下而上(迭代)方法。
由于您知道要输入n
,因此需要stairs(p)
for的所有值0 <= p <= n
。您可以stairs(p)
从开始p = 0
一直迭代计算,直到达到p = n
,如下所示:
def stairs(n):
table = [1, 1] # p = 0 and p = 1
for i in range(2, n + 1):
table.append(table[i - 2] + table[i - 1])
return table[n]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句