问题标签 [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.

0 投票
10 回答
208288 浏览

algorithm - 什么是尾调用优化?

很简单,什么是尾调用优化?

更具体地说,有哪些小代码片段可以应用,哪些不可以,并解释原因?

0 投票
3 回答
697 浏览

c - DrScheme 中如何实现尾调用优化?

我听说蹦床是实施 TCO 的一种无效方式。DrScheme(PLAI Scheme,技术上)是如何做到的?它是否以“正确”的方式进行(即生成直接分支到尾调用的汇编代码,而不是通过堆栈和蹦床)?

0 投票
4 回答
698 浏览

programming-languages - 为什么尾调用优化需要垃圾收集?

为什么尾调用优化需要垃圾收集?是不是因为如果你在一个函数中分配内存,然后你想对它进行尾调用,就没有办法进行尾调用并重新获得该内存?(因此必须保存堆栈,以便在尾调用之后可以回收内存。)

0 投票
8 回答
11576 浏览

java - JVM实现之间的差异

JVM 实现有何不同(许可除外)?每个 JVM 是否都为通用处理实现类型擦除?

两者的区别在哪里:

  • JRockit
  • IBM JVM
  • 太阳虚拟机
  • 打开 JDK
  • 停电
  • 咖啡

.....用尾调用优化处理其中之一?

0 投票
2 回答
2934 浏览

f# - 我如何知道一个函数是否在 F# 中是尾递归的

我写了以下函数:

我怎么知道 F# 编译器是否把它变成了循环?有没有办法在不使用 Reflector 的情况下找出答案(我没有使用 Reflector 的经验,也不懂 C#)?

编辑:另外,是否可以在不使用内部函数的情况下编写尾递归函数,或者循环是否必须驻留在其中?

此外,F# std lib 中是否有一个函数可以多次运行给定函数,每次都将最后一个输出作为输入?假设我有一个字符串,我想在字符串上运行一个函数,然后在结果字符串上再次运行它,依此类推......

0 投票
4 回答
1630 浏览

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

显然,关于 Python 是否需要尾调用优化引起了很大的争论。当有人因为 Guido 没有“得到它”而向 Guido 发送了一份 SICP 副本时,这种情况就出现了。我和圭多在同一条船上。我了解尾调用优化的概念。我只是想不出 Python 真正需要它的任何原因。

为了让我更容易理解,有人可以给我一段使用 TCO 可以大大简化的代码片段吗?

0 投票
3 回答
369 浏览

python - 为了实现尾调用优化,jvm 必须牺牲什么?

人们说除了没有尾调用优化的限制之外,clojure 实现非常出色 - jvm 的限制而不是 clojure 实现。

http://lambda-the-ultimate.org/node/2547

据说在 Python 中实现 TCO 会牺牲

  • 堆栈跟踪转储,以及
  • 调试规律。

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

是否必须为 TCO 的 jvm 实现做出同样的牺牲?还要牺牲什么吗?

0 投票
2 回答
433 浏览

iphone - iPhone 的 Xcode 是否消除了尾调用递归?

Xcode 是否支持 iPhone 上的尾调用优化?

0 投票
1 回答
787 浏览

oracle - PL/SQL 是否执行尾调用优化?

我对这种语言相当陌生,我想知道尾调用是否得到了优化。在其他语言中,我可以检查机器代码或中间表示并自己计算出来,但我不知道如何在 PL/SQL 中做到这一点。

提前致谢。

0 投票
2 回答
10512 浏览

language-agnostic - 什么是尾递归消除?

Steve Yegge 在一篇博文中提到了它,我不知道它是什么意思,有人能补充一下吗?

它与尾调用优化相同吗?