斐波那契数列


定义

斐波那契数列(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)(≥ 2,∈ 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     }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM