recursion - 递归和迭代之间的区别

标签 recursion iteration

有什么不同?这些是一样的吗?如果没有,有人可以给我一个例子吗?
兆瓦:
迭代 - 1 : 迭代或重复的 Action 或过程或直到满足条件
递归 - 3:一种计算机编程技术,涉及使用一个或多次调用自身直到满足指定条件的过程、子例程、函数或算法,此时每次重复的其余部分从最后一次调用到首先

最佳答案

我们可以将递归和迭代过程与 recursive and iterative processes 区分开来(就像在 SICP 中所做的那样)。 .前者如您的定义所述,其中递归与数学 recursion 基本相同: 一个 recursive procedure是根据自身来定义的。迭代过程使用循环语句重复代码块。然而,递归过程需要非常量(例如 O(n) or O(lg(n)) space )来执行,而迭代过程需要 O(1)(常数)空间。

对于数学示例,斐波那契数是递归定义的:

Fibonacci function

Sigma notation类似于迭代:

harmonic number

原样 Pi notation .类似于如何将一些(数学)递归公式重写为迭代公式,一些(但不是全部)递归过程具有迭代等价物。通过在您自己的数据结构中跟踪部分结果,而不是使用函数调用堆栈,所有递归过程都可以转换为迭代过程。

关于recursion - 递归和迭代之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2576993/

相关文章:

json - 如何在 Go 中构建结构的递归 slice ?

python - 了解汉诺塔的 Python

javascript - 如何在 map 迭代中获取特定对象键

python - 列出按描述符类型过滤的对象属性

java - 异常后继续列表迭代

recursion - 为什么这个 F# 内部函数不是尾递归的?

python - 如何从嵌入的字典/列表中提取所有值?

javascript - 如何使这个数组展平函数在 JavaScript 中递归运行?

c++ - 使用双端队列在 C++ 中递归合并排序到迭代

python - 如何在迭代列表时迭代其键时更改字典