程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 斐波拉契數列,斐波契數列

斐波拉契數列,斐波契數列

編輯:C++入門知識

斐波拉契數列,斐波契數列


寫一個函數,輸入n,其斐波那契數列的第n項。

  斐波那契數列的定義如下:

  • F_0=0
  • F_1=1
  • F_n = F_{n-1}+ F_{n-2}
 1 #include "stdafx.h"
 2 #include<iostream>
 3 using namespace std;
 4 
 5 
 6 //方法1 遞歸  缺點:效率低 
 7 long long Fibonacci_Solution1(unsigned int n )
 8  {
 9      if(n <= 0)
10          return 0;
11 
12      if( n == 1)
13          return 1;
14 
15      return Fibonacci_Solution1(n-1) + Fibonacci_Solution1(n-2);
16  }
17 
18 //方法2 循環 
19  long long Fibonacci_Solution2(unsigned int n)
20  {
21      int result[2] = {0,1};
22      if(n < 2)
23          return result[n];
24 
25      long long fibNMinusOne = 1;
26      long long fibNMinusTwo = 0;
27      long long fibN = 0;
28 
29      for(unsigned int i = 2 ; i <= n ; ++i)
30      {
31          fibN = fibNMinusOne + fibNMinusTwo;
32 
33          fibNMinusTwo = fibNMinusOne;
34          fibNMinusOne = fibN;
35      }
36 
37      return fibN;
38  }
39  
40  //方法3 循環 其實和方法2差不多 
41  long long Fibonacci_Solution3(unsigned int n)
42  {
43      if(n <= 0)
44          return 0;
45      else if(n == 1)
46          return 1;
47      else
48      {
49          int *array = new int[n+1];
50          array[0] = 0;
51          array[1] = 1;
52          for(int i = 2; i<= n; i++)
53              array[i] = array[i-1] + array[i-2];
54 
55          int result = array[n];
56          delete[] array;
57 
58          return result;
59       }
60  }
61 
62 //方法4 數學歸納法 略
63 
64  
65  int main()
66  {
67      int num1 = Fibonacci_Solution1(30);
68      int num2 = Fibonacci_Solution2(30);
69      int num3 = Fibonacci_Solution3(30);
70      
71      cout << num1 <<endl;
72      cout << num2 <<endl;
73      cout << num3 <<endl;
74     
75     return 0;
76  }

 運行結果如下:

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved