定义
斐波那契数列(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 }