斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的是這樣一個數列:1、1、2、3、5、8、13、21、34... 百度百科 1 >>>數組 很好理解。 求第a ...
斐波那契數列(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); }
學習階段,有錯誤還望指出,謝謝!