定義
斐波那契數列(Fibonacci sequence),又稱黃金分割數列,因數學家萊昂納多·斐波那契(Leonardo Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數列”。
這個數列從第3項開始,每一項都等於前兩項之和。例如數列:1、1、2、3、5、8、13、21、34、……
在數學上,斐波那契數列以如下被以遞推的方法定義:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)
用C#實現
方法一:遞歸
1 //斐波那契數列(Fibonacci sequence) 2 class Fibonacci 3 { 4 //遞歸調用 5 public int f(int n) 6 { 7 //終止條件是n為0或1,否則就不斷調用自身函數 8 if (n == 0 || n == 1) 9 { 10 return n; 11 } 12 else 13 { 14 return f(n - 1) + f(n - 2); 15 } 16 } 17 }
方法二:循環
迭代累加
1 //斐波那契數列(Fibonacci sequence) 2 class Fibonacci 3 { 4 //迭代累加和 5 public int f1(int n) 6 { 7 //n為0或1等於本身 8 if (n == 0 || n == 1) 9 { 10 return n; 11 } 12 //前兩項之和推出后一項 13 else 14 { 15 int x = 0, y = 1, result = 0; 16 for (int i = 2; i <= n; i++) 17 { 18 result = x + y; 19 x = y; 20 y = result; 21 } 22 return result; 23 } 24 } 25 }
動態規划
1 //斐波那契數列(Fibonacci sequence) 2 class Fibonacci 3 { 4 //動態規划 5 public int f2(int n) 6 { 7 //n為0或1等於本身 8 if (n == 0 || n == 1) 9 { 10 return n; 11 } 12 //前兩項之和推出后一項,用數組存放 13 else 14 { 15 int[] Fibonacci = new int[n + 1]; 16 Fibonacci[0] = 0; 17 Fibonacci[1] = 1; 18 for (int i = 2; i <= n; i++) 19 { 20 Fibonacci[i] = Fibonacci[i - 1] + Fibonacci[i - 2]; 21 } 22 return Fibonacci[n]; 23 } 24 } 25 }