fibonacii數列(斐波那契數列)的遞迴實現及迴圈實現
阿新 • • 發佈:2019-01-09
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)。