我正在阅读有关 Clojure 的内容,发现在当前版本中 Java 不支持尾调用的讨论,并且人们正在抛出异常来模拟 JVM 中的尾调用,无论如何听起来人们正在做一些疯狂的事情。所以这让我想知道 C# 的尾调用,同样的问题?
Robert Gould
问问题
655 次
2 回答
6
CLR 代码在某些情况下会尾随调用,但在其他情况下不会——这取决于 JIT。
请参阅David Broman 的博客条目和Shri Borde 的博客条目。
C# 编译器当前不发出尾调用 IL,但有时 JIT 无论如何都会这样做。
于 2008-12-09T15:12:12.780 回答
1
在某些情况下,JVM 上可以进行尾递归。例如,Scala 要求基本尾递归的有效实现(请参阅此博客文章,查找Language Trivia #8,仅引用我现在能找到的)。有关于添加更多支持的讨论和研究,与 Invoke Dynamic 和其他专门用于非 Java 语言的特性一样。
Java Posse上也经常讨论这类问题。
是的,我知道这完全不是你问题的答案......
于 2008-12-09T15:30:52.743 回答