python - 向我解释尾调用优化有什么大不了的,为什么 Python 需要它

标签 python tail-recursion tail-call-optimization

显然,关于 Python 是否需要尾调用优化 (TCO) 引发了一场大争论。当有人 shipped Guido a copy of SICP ,因为他没有“明白”。我和 Guido 在同一条船上.我了解尾调用优化的概念。我只是想不出 Python 真正需要它的任何原因。

为了让我更容易理解,使用 TCO 可以大大简化的代码片段是什么?

最佳答案

就我个人而言,我非常重视尾调用优化;但主要是因为它使递归与迭代一样有效(或使迭代成为递归的子集)。在极简语言中,您可以在不牺牲性能的情况下获得强大的表达能力。

在“实用”语言(如 Python)中,OTOH,对于几乎所有可以想象的情况,您通常都有很多其他结构,因此它不那么重要。当然,考虑到不可预见的情况,拥有它总是一件好事。

就我个人而言,我非常重视尾调用优化;但主要是因为它使递归与迭代一样有效(或使迭代成为递归的子集)。在极简语言中,您可以在不牺牲性能的情况下获得强大的表达能力。

在“实用”语言(如 Python)中,OTOH,对于几乎所有可以想象的情况,您通常都有很多其他结构,因此它不那么重要。当然,考虑到不可预见的情况,拥有它总是一件好事。

关于python - 向我解释尾调用优化有什么大不了的,为什么 Python 需要它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/890461/

相关文章:

scala - 如何优化 Scala 递归函数的双重调用

c# - 额外的 ldnull 和 tail 的目的是什么。在 F# 实现与 C# 中?

scheme - Scheme中的递归函数是否总是尾调用优化?

scala - 为什么 Clojure 在递归添加函数上比 Scala 快得多?

python - 使用字符串元组更新 Python 字典以设置(键,值)失败

python - 如何将整个文件读入python中的列表?

java - 使用递归时在根节点返回路径

scala - 如何实现 TCO 递归

python - 链接对象的设计模式

python - 如何使用 igraph 在 python 中绘制 3d 图?