什么是迭代和递归,为什么它们是迄今为止最常用的循环方式?

问题描述 投票:0回答:0

我不确定这个问题是否适合 Stack Overflow。如果这里不适合,你能推荐一个更合适的社区吗?

最近我一直在思考迭代(像forwhiledo-while等构造)和递归。它们是图灵完备性的关键要素,它们可以被视为等同的:可以使用另一个来实现。

问题 1. things 的集合是否有类似或等同于迭代和递归的名称?我会称它们为“一种循环”或“一种多次运行同一程序的一部分的方法”、“重复控制流构造”、“循环语义”或“循环范式”,但这些定义似乎都不准确。我无法通过谷歌找到更好的。

我知道其他 东西 相当于迭代和递归,例如 GOTO/跳转指令,或者 在图灵机的直接图性质中前后移动磁带的能力。然而,这些和其他解决方案并未被广泛采用。例如,C 提供 goto

,但大多数情况下不鼓励使用它。每种语言都支持递归和迭代(后者在纯语言中可以通过递归实现),非初学者程序员都懂。

问题 2. 是否有迭代和递归的替代方案,它们具有可比的开销/成本/复杂性,并且可以轻松推理(一旦您有足够的经验)?

我怀疑逻辑编程语言的解析算法就是这样一种选择,因此我希望答案是肯定的。 @Stef 指出的其他示例包括字符串重写和事件驱动系统。

我非常想了解尽可能多的替代方案。

问题 3. 假设问题 2 有一个肯定的答案:为什么迭代和递归被如此广泛地接受,而它们的替代方案充其量是边缘的?

loops recursion language-agnostic turing-machines turing-complete
© www.soinside.com 2019 - 2024. All rights reserved.