【问题标题】:Which one to use Iteration or Recursion and Why?哪一个使用迭代或递归,为什么?
【发布时间】:2014-11-13 13:36:13
【问题描述】:

抱歉,我无法从此处的其他相关问题中得到确切答案。一般来说,如果我们事先不知道一个问题可能需要多少次迭代或重复。在大多数情况下哪个是更好的解决方案,为什么?

【问题讨论】:

标签: recursion iteration


【解决方案1】:

我认为这个决定取决于问题本身。如果我不知道算法的迭代次数,当我觉得问题的性质有助于我做到这一点时,我会使用递归算法。

例如,如果我想计算给定集合中所有可能的非空子集,我会使用递归算法,如果我想计算元素列表的总和,我会使用迭代算法。

在这两种情况下,我都可以使用其他方法来解决问题,但我觉得这样编码更舒服。

【讨论】:

    【解决方案2】:

    在不提供尾调用消除的编程语言中,出于性能原因,您通常应该支持迭代而不是递归。但是,在某些情况下,递归解决方案更直观且更易于输入。例如,解决本质上递归的问题(使用树、回溯等)。一般来说,你应该选择这两个选项中最易读的解决方案,当性能很重要时,使用更快的一个,即迭代。需要注意的是,有些语言不提供循环功能,比如 Haskell。但是,Haskell 有尾调用消除,所以当你想要一个循环时,你可以写一个尾递归算法,它会被编译器翻译成一个循环。因此,递归并不总是像某些人认为的那样慢于迭代。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-25
      • 2015-03-26
      • 2019-03-25
      • 2014-05-31
      • 2021-01-07
      • 2015-03-16
      • 2013-11-16
      • 2020-08-28
      相关资源
      最近更新 更多