1. 程式人生 > >輸出斐波那契數列的前n項

輸出斐波那契數列的前n項

菲波那契數列的格式如下:
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也就獲得了值。
總結為一句話:沒有值就一直傳遞,直到滿足了設定的條件,出口,再歸來,即遞迴。
原理如圖:
遞迴原理

據說寫夠10000000行程式碼就變成大神了!!!