在jvm-prevent-tail-call-optimization之后两年,似乎有一个原型 实现,MLVM已经将该功能列为"proto 80%"一段时间了.
Sun的/ Oracle方面是否没有积极的兴趣支持尾调用,或者只是尾部调用" 在每个功能优先级列表中排在第二位 [...]"如JVM所述语言峰会?
如果有人测试了MLVM构建并且可以分享它的工作原理(如果有的话),我会非常感兴趣.
更新: 请注意,像Avian这样的某些虚拟机支持正确的尾部调用,没有任何问题.
java language-agnostic optimization jvm tail-call-optimization
代码1:
public static int fibonacci (int n){
if (n == 0 || n == 1) {
return 1;
} else {
return fibonacci (n-1) + fibonacci (n-2);
}
}
Run Code Online (Sandbox Code Playgroud)
fibonacci如果你还没有完成解释它是什么,你怎么用?我已经能够理解在其他情况下使用递归,如下所示:
代码2:
class two
{
public static void two (int n)
{
if (n>0)
{
System.out.println (n) ;
two (n-1) ;
}
else
{
return ;
}
}
public static void main (String[] arg)
{
two (12) ;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,在代码2的情况下,n最终将达到它不满足的点,n>0并且该方法将停止递归调用自身.但是,在代码2的情况下,我不知道它是如何从1 n=1开始的,如果是起点2和3和5,依此类推.此外,我不知道该线如何return fibonacci (n-1) …