【发布时间】:2015-09-27 15:16:26
【问题描述】:
我最近了解了尾递归。 我了解,许多编程语言编译器会执行[Current java doesn't] s,当它找到递归方法时会进行代码优化“尾递归”。
我对 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 不对尾递归做任何代码优化:stackoverflow.com/questions/3616483/…
标签: java fibonacci tail-recursion