0
我最近了解到尾递归。 据我所知,许多编程语言编译器在发现递归方法为“尾递归”时执行[当前java不],代码优化。Java尾递归:低于斐波那契码尾递归?
我对TR的理解: 编译器,在调用返回后没有进一步的操作时,不会创建新的堆栈帧(取代旧的调用的堆栈帧)。
下面的代码[即使在java]尾部递归?
假设totalSeriesLenght = 10
public void generateFibonacciSeries(int totalSeriesLenght) {
int firstNum = 0;
int secondNum = 1;
printNextFibonacciNumber(firstNum, secondNum,totalSeriesLenght);
}
public void printNextFibonacciNumber(int fiboOne , int fiboTwo,int totalSeriesLenght) {
if(totalSeriesLenght >= 1) {
System.out.print(fiboOne + ",");
int fiboNext = fiboOne + fiboTwo;
totalSeriesLenght --;
printNextFibonacciNumber(fiboTwo, fiboNext,totalSeriesLenght);
}
}
Java不会为尾递归执行任何代码优化:http://stackoverflow.com/questions/3616483/why-does-the-jvm-still-not-support-tail-call-optimization – Tunaki