public class Fibonacii {
public static long fibo(int num){ //递归方法
if(num==1||num==2) //定义出口
return 1;
return fibo(num-1)+fibo(num-2); //定义相似递归体
}
public static long fibo2(int num){ //循环方法
if(num==1||num==2)
return 1;
int long=0; //总和
long current=1;
long next=1;
for(int i=2;i<num;i++){
sum=current+next; //前两个数相加
current=next; //移动位置
next=sum;
}
return sum;
}
public static void main(String[] args) {
System.out.println(fibo2(3));
}
}
该递归的执行过程类似于树的深度优先搜素,搜索到最深一个元素再返回。如下图(箭头上出下回)。另外循环方法性能明显优于递归方法,递归函数实参过大计算不出结果,但不报错,如fibo(100)。