斐波那契數列


定義

斐波那契數列(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