1. 程式人生 > >fibonacii數列(斐波那契數列)的遞迴實現及迴圈實現

fibonacii數列(斐波那契數列)的遞迴實現及迴圈實現

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)。