輸出斐波那契數列的前n項
阿新 • • 發佈:2019-02-02
菲波那契數列的格式如下:
1 1 2 3 5 8 13……
滿足:
1.前兩項為 1
2.前兩項的和等於第三項
在這裡我們用到了 遞迴演算法:
遞迴:自己呼叫自己 肯定有自己的出口不然就死迴圈了
遞迴的特點:優點:思路清晰
缺點:效率低
首先看一下程式碼:
import java.util.*;
public class Work21{
static int n;
static int m;
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("輸入要輸出菲波那契數列的項數:");
n = scan.nextInt(); //輸入要輸出的項數
for(int i=0;i<n;i++){ //迴圈輸出菲波那契數列
System.out.print(getfbnq(i)+" ");
}
}
//獲得菲波那契數列各項的值
public static long getfnum(int a){
if(a<2){ //滿足這個條件停止遞迴 遞迴出口
return 1;
}else{ //求菲波那契數列的公式
//在這裡我們用到了遞迴,也就是讓getfnum(int a)方法自己再呼叫自己,直到條件不滿足,開始傳遞資料一層一層歸來
return (getfnum(a-1)+getfnum(a-2));
}
}
}
這裡的難點就是自己呼叫自己,下面通過一個圖來表達一下:
首先是求G的值,G=E+F,然後F=D+E,E=C+D ……
一直往前找,走到了程式的出口,找到了A、B,滿足了設定的條件而且它們有值,然後再依次傳遞給前面,最終E、F都有值了,即G也就獲得了值。
總結為一句話:沒有值就一直傳遞,直到滿足了設定的條件,出口,再歸來,即遞迴。
原理如圖: