用while循环替换递归(爬楼梯难题):Python

Monkeybiz7

我正在练习用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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

用while循环替换递归(爬楼梯难题):Python

来自分类Dev

Java Benchmark用于递归爬楼梯难题

来自分类Dev

爬楼梯的最低成本动态编程

来自分类Dev

用while循环替换递归

来自分类Dev

用递归替换while循环

来自分类Dev

比 LeetCode 的“爬楼梯”问题的深度优先搜索解决方案更好

来自分类Dev

用foreach替换while循环

来自分类Dev

用 for each 替换 while 循环

来自分类Dev

用Stream替换for循环内的递归

来自分类Dev

用递归xslt模拟while或for循环

来自分类Dev

Python:用函数替换for循环

来自分类Dev

用Select查询替换While循环

来自分类Dev

递归难题

来自分类Dev

用更实用的方法替换链接(递归)的循环

来自分类Dev

While循环内的递归函数(Python)

来自分类Dev

在楼梯上递归

来自分类Dev

在楼梯上递归

来自分类Dev

用foreach循环递归

来自分类Dev

用更有效的代码替换此While循环?

来自分类Dev

在递归函数中用尾递归替换 for 循环

来自分类Dev

用while循环python写阶乘

来自分类Dev

用迭代替换递归

来自分类Dev

是否用for循环替换?

来自分类Dev

用循环重写递归函数

来自分类Dev

用向量化方法替换python for循环以丢弃丢失的数据

来自分类Dev

Python:蜘蛛递归循环

来自分类Dev

尝试用循环替换尾部递归调用

来自分类Dev

如何在Javascript中用递归替换循环?

来自分类Dev

Perl foreach循环难题