我听到我的一位同事说Java比c或C ++更有效地处理递归,我只是好奇为什么它能够这样做?我的意思是什么是“引擎盖下”的过程才能实现这一目标。
所有努力都表示赞赏。
答案 0 :(得分:3)
关于递归的常见问题(不是100%肯定这是你的同事所指的)是'它'(编译器,JIT,运行时,等等)是否可以(并且确实)实现'尾调用优化' 。目标是,不是让代码进行“真正的”调用(在调用堆栈中引入一个新的框架),而是递归(进入相同的函数或通过相同的'循环'函数),你可以获得相同的效果这样做。
维基百科页面在描述它时相当不错。
答案 1 :(得分:1)
如果它是正确的,那是因为JIT编译能够比C编译器更好地优化递归。 http://en.wikipedia.org/wiki/Just-in-time_compilation