问题标签 [tail-call-optimization]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
algorithm - 什么是尾调用优化?
很简单,什么是尾调用优化?
更具体地说,有哪些小代码片段可以应用,哪些不可以,并解释原因?
c - DrScheme 中如何实现尾调用优化?
我听说蹦床是实施 TCO 的一种无效方式。DrScheme(PLAI Scheme,技术上)是如何做到的?它是否以“正确”的方式进行(即生成直接分支到尾调用的汇编代码,而不是通过堆栈和蹦床)?
programming-languages - 为什么尾调用优化需要垃圾收集?
为什么尾调用优化需要垃圾收集?是不是因为如果你在一个函数中分配内存,然后你想对它进行尾调用,就没有办法进行尾调用并重新获得该内存?(因此必须保存堆栈,以便在尾调用之后可以回收内存。)
java - JVM实现之间的差异
JVM 实现有何不同(许可除外)?每个 JVM 是否都为通用处理实现类型擦除?
两者的区别在哪里:
- JRockit
- IBM JVM
- 太阳虚拟机
- 打开 JDK
- 停电
- 咖啡
.....用尾调用优化处理其中之一?
f# - 我如何知道一个函数是否在 F# 中是尾递归的
我写了以下函数:
我怎么知道 F# 编译器是否把它变成了循环?有没有办法在不使用 Reflector 的情况下找出答案(我没有使用 Reflector 的经验,也不懂 C#)?
编辑:另外,是否可以在不使用内部函数的情况下编写尾递归函数,或者循环是否必须驻留在其中?
此外,F# std lib 中是否有一个函数可以多次运行给定函数,每次都将最后一个输出作为输入?假设我有一个字符串,我想在字符串上运行一个函数,然后在结果字符串上再次运行它,依此类推......
python - 向我解释尾调用优化有什么大不了的,为什么 Python 需要它
显然,关于 Python 是否需要尾调用优化引起了很大的争论。当有人因为 Guido 没有“得到它”而向 Guido 发送了一份 SICP 副本时,这种情况就出现了。我和圭多在同一条船上。我了解尾调用优化的概念。我只是想不出 Python 真正需要它的任何原因。
为了让我更容易理解,有人可以给我一段使用 TCO 可以大大简化的代码片段吗?
python - 为了实现尾调用优化,jvm 必须牺牲什么?
人们说除了没有尾调用优化的限制之外,clojure 实现非常出色 - jvm 的限制而不是 clojure 实现。
http://lambda-the-ultimate.org/node/2547
据说在 Python 中实现 TCO 会牺牲
- 堆栈跟踪转储,以及
- 调试规律。
向我解释尾调用优化有什么大不了的,为什么 Python 需要它
是否必须为 TCO 的 jvm 实现做出同样的牺牲?还要牺牲什么吗?
iphone - iPhone 的 Xcode 是否消除了尾调用递归?
Xcode 是否支持 iPhone 上的尾调用优化?
oracle - PL/SQL 是否执行尾调用优化?
我对这种语言相当陌生,我想知道尾调用是否得到了优化。在其他语言中,我可以检查机器代码或中间表示并自己计算出来,但我不知道如何在 PL/SQL 中做到这一点。
提前致谢。
language-agnostic - 什么是尾递归消除?
Steve Yegge 在一篇博文中提到了它,我不知道它是什么意思,有人能补充一下吗?
它与尾调用优化相同吗?