18得票1回答
Java是否支持尾递归?

可能是重复的问题: 为什么JVM仍然不支持尾递归优化? 我在网上看到了很多不同的答案,所以我想请教专家们。

22得票4回答
为什么Clojure在递归加法函数上比Scala快得多?

我的朋友给了我这个Clojure的代码片段(defn sum [coll acc] (if (empty? coll) acc (recur (rest coll) (+ (first coll) acc)))) (time (sum (range 1 9999999) 0)) 他问我它与类似...

64得票5回答
如何在没有尾递归优化的情况下,用函数式编程替换while循环?

我正在尝试在JavaScript中使用更具功能性的风格,因此我用诸如map和reduce之类的实用函数替换了for循环。然而,由于JavaScript通常不支持尾调用优化,我还没有找到while循环的功能性替代方法。(据我所知,ES6可以防止尾调用溢出堆栈,但不会优化它们的性能。) 下面是我...

16得票3回答
如何判断在F#中一个函数是否是尾递归的

我写了下面这个函数:let str2lst str = let rec f s acc = match s with | "" -> acc | _ -> f (s.Substring 1) (s.[0]::acc) f...

7得票1回答
传递引用会阻碍gcc进行尾调用优化。

请查看BlendingTable::create和BlendingTable::print。两者都具有相同形式的尾递归,但是create将被优化为循环,而print不会,从而导致堆栈溢出。 向下滚动以查看解决方法,我从其中一位gcc开发人员的提示中获得了这个问题的修复方法。 #includ...

1084得票10回答
什么是尾调用优化?

非常简单,什么是尾调用优化? 更具体地说,有哪些可以应用尾调用优化的小代码片段,在哪些情况下不能应用,以及为什么不能应用?

20得票4回答
解释一下尾调用优化的重要性以及为什么Python需要它。

显然,关于Python是否需要尾递归优化(TCO)已经引起了很大的争议。这一问题在有人向Guido发送了SICP的副本之后达到了高潮,因为他不“理解”。我和Guido一样。我理解尾递归优化的概念。我只是想不出Python真正需要它的原因。 为了让我更容易理解,你能给出一个可以使用TCO大大简...

104得票4回答
Haskell是否具有尾递归优化?

今天我在Unix中发现了"time"命令,想用它来检查Haskell中尾递归和普通递归函数运行时间的差异。 我编写了以下函数:--tail recursive fac :: (Integral a) => a -> a fac x = fac' x 1 where fac...

16得票2回答
Java 8有尾调用优化吗?

我试图在网上查找答案来解决我的问题。我找到了一些与DaVinci项目相关的文件。这个项目标记为JSR 292,涉及将闭包包含在JVM中。这个项目是否已经实现,并且它是Java 8的一部分吗?

14得票2回答
MATLAB是否执行尾递归优化?

我最近学习了Haskell,并尽可能将纯函数式风格应用到其他代码中。这其中一个重要的方面是将所有变量视为不可变的,即常量。为了做到这一点,许多在命令式编程风格下使用循环实现的计算必须使用递归来执行,这通常会因为每个函数调用都需要分配一个新的栈帧而产生内存开销。但是,在特殊情况下,即尾调用(被调...