斐波那契数列的实现是一道很经典的笔试题,大家都知道可以用递归轻松地解决。
今天我主要是写一种一样是递归,但是我在网上没看到过的实现方式。我的这种实现方式应该算是尾递归吧
尾递归:如果一个函数中所有递归形式的调用都出现在函数的末尾,我们称这个递归函数是尾递归的。当递归调用是整个函数体中最后执行的语句
且它的返回值不属于表达式的一部分时,这个递归调用就是尾递归。尾递归函数的特点是在回归过程中不用做任何操作
记得把数据类型改为 long,如果数据类型是 int,算第 47 项就出错了。
package penTest;
//斐波那契数列
public class Fibonacci_recursion {
public static void main(String[] args) {
long start1 = System.currentTimeMillis();
long num1 = fibonaciiNormal(40);
long end1 = System.currentTimeMillis();
long start2 = System.currentTimeMillis();
long num2 = fibonaciiTailRecursion(1, 1, 40);
long end2 = System.currentTimeMillis();
long start3 = System.currentTimeMillis();
long num3 = fibonaciiRecursion(40);
long end3 = System.currentTimeMillis();