【问题标题】:When to use while loops vs recursion何时使用 while 循环与递归
【发布时间】:2020-07-05 03:21:44
【问题描述】:

我是一个初学者,我开始学习“while”语句循环来执行迭代。但是,早些时候我了解了“if/else”语句以及如何通过返回变量来使用 if/else 执行递归。下面是一个使用 while 语句的简单倒计时函数:

def countdown(n):
    while n > 0:
        print(n)
        n = n-1
    print('Blast off!')

为了比较,这里有一个使用 if/else 和递归的简单倒计时函数。

def countdown(n):
    if n > 0:
        print(n)
        return countdown(n-1)
    elif n < 0:
        return None
    else:
        print('Blast off!')
        return

如您所见,这两个函数做的事情几乎完全相同,唯一的区别是 if/else 语句说明了 n

我的问题是,看看如何在 if/else 语句和 while 语句中完成相同的事情,反之亦然,我想知道它们有明显区别并且一个明显优于另一个的情况.我遗漏的两种类型的陈述之间是否存在细微的概念差异,或者它们在用法上是否可以互换?

【问题讨论】:

  • 递归在很多情况下都很有用,你听说过二进制排序吗?它比传统的列表线性排序要好,而且效率更高。都是因为它的递归算法。
  • 这里有一些很好的讨论:softwareengineering.stackexchange.com/questions/182314/…。请注意,在实践中,某些语言/环境可以为您做出此选择。

标签: python if-statement while-loop


【解决方案1】:

它们本质上是不同的。您描述它们的方式与 for 循环相同。 (我不是故意粗鲁)While 用于当您希望某件事发生时,只要或直到发生其他事情。递归用于基于自身的函数。 (常见的例子是阶乘或斐波那契数列)通常,它们的行为方式与您在小规模问题上描述的方式相似。然而,当扩大规模时,两者都有其优点和缺点。

TLDR:函数在迭代方式上本质上是不同的。虽然它们都在迭代,但它们会根据不同的条件和不同的用例进行迭代。

【讨论】:

    猜你喜欢
    • 2012-08-04
    • 2013-08-12
    • 2021-05-03
    • 2018-06-24
    • 2016-02-27
    • 1970-01-01
    • 2018-08-15
    • 1970-01-01
    • 2011-02-09
    相关资源
    最近更新 更多