53得票4回答
Go语言中的尾调用优化

截至目前,Go编程语言是否优化尾调用?如果没有,它是否至少优化函数对其本身的尾递归调用?

46得票5回答
为什么Scala编译器只有在方法被标记为final时才应用尾调用优化?

为什么Scala编译器只有在方法被声明为final时才会应用尾递归优化? 例如,下面的代码: class C { @tailrec def fact(n: Int, result: Int): Int = if(n == 0) result ...

11得票7回答
GCC/Clang是否可以强制尾调用优化?

我希望尽可能地使用C语言编写功能式程序。我知道像GCC/Clang这样的优秀编译器会自动地进行尾调用优化,但这并不是保证的。是否有任何选项可以强制编译器进行尾调用优化呢?(当然,只有在函数的最后一个调用时)

10得票3回答
F#有尾调用消除吗?

在这个讲座中,Runar在前8分钟解释了Scala在尾调用消除方面存在问题,这让我想知道F#是否存在类似的问题?如果没有,为什么没有呢?

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

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

38得票2回答
什么是尾递归消除?

Steve Yegge 在一篇博客文章中提到了它,但我不知道它是什么意思,有人能告诉我吗? 它是否与尾调用优化是同一件事?

27得票2回答
C#为什么不使用"tail." CIL指令,是否有技术原因?

可能的重复问题: 为什么 .net/C# 没有消除尾递归? 以下是 C# 代码:using System; namespace TailTest { class MainClass { public static void Main (str...

9得票2回答
为什么这个 F# 序列函数不是尾递归的?

声明:这是我维护的F#随机测试框架FsCheck中出现的问题。我有一个解决方案,但我不喜欢它。此外,我也不理解这个问题——那只是被规避了。 (如果我们要使用专业术语)序列的一个相当标准的实现是: let sequence l = let k m m' = gen { let! x...

10得票5回答
VS2010 C++ 尾调用优化

考虑以下代码:int fac_aux( int x, int res ) { if( x == 1 ) return res; else return fac_aux( x - 1, res * x ); } int fac( int x ) { return fac...

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)) 他问我它与类似...