斐波那契數列 (C#)

豬翔heart發表於2018-08-15

斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的是這樣一個數列:1、1、2、3、5、8、13、21、34…

                                                             —百度百科

1 >>>陣列        很好理解。

 求第a位的數是多少?

第a位在迴圈中的下標是a-1。所以返回list[a-1];

public static int Fbnq(int a)
        {
            int[] list = new int[a];
            list[0] = 1;
            list[1] = 1;
            for (var i = 2; i < a; i++)
            {
                list[i] = list[i - 1] + list[i - 2];
            }
            return list[a - 1];
        }

 

2 >>>遞迴         很簡潔,難理解,耗效能。

  求第a位的數是多少?

遞迴有終點。本例終點就是a<=2的時候返回值是1

講解:例如傳入的a是30,求第30位是多少?

30進入函式執行:後邊的語句。執行時 她發現需要Fbn1(29)+Fbn1(28),又發現29需要27+28,28需要27+26…… 直到到Fbn1(0)+Fbn1(1)【a<=2時】。函式有了值1

然後一路加回去,便求出Fbnq(30).

public static int Fbnq1(int a)
        {
            return a <= 2 ? 1 : Fbnq1(a - 1) + Fbnq1(a - 2);
        }

 學習階段,有錯誤還望指出,謝謝!

 

相關文章