【发布时间】:2011-09-07 17:11:28
【问题描述】:
我听到我的一位同事说 Java 处理递归比 c 或 C++ 更有效,我只是好奇它为什么能够这样做?我的意思是什么是“幕后”的过程,使这发生。
感谢所有的努力。
【问题讨论】:
-
他们提供了什么理由?由于 JIT,我可以看到 Java 能够更好地优化某些代码,但也有 C/C++ 编译器使 JVM 没有的优化,例如 tail-call optimization。
-
显然正确答案在this question。 :)
-
@birryree - 我不知道 JVM/Java 编译器的当前状态,但 3 年前的 this SO question 声明 JVM(至少在当时)确实支持 self 的特定情况-recursive(根据我的经验,这是实际编写的绝大多数递归函数)。对于大于单个函数的递归“循环”不这样做的安全原因是有道理的,尽管因为那是 3 年的历史,它们可能早就被解决了。
-
为什么这个问题被关闭了?在我看来,它非常适合常见问题解答中的问答格式。如今,一些普通用户似乎将解决问题作为一项运动。我只是在输入一个非常详细的答案......
-
对不起,我的答案不见了。不过stackoverflow.com/questions/105834/…里也说了,这里已经有人提过了。