C++用遞歸實現斐波那契數列


【題目描述】

菲波那契數列是指這樣的數列: 數列的第一個和第二個數都為1,接下來每個數都等於前面2個數之和。

給出一個正整數a,要求菲波那契數列中第a個數是多少。

 

【輸入】

第1行是測試數據的組數n,后面跟着n行輸入。每組測試數據占1行,包括一個正整數a(1≤a≤20)。

【輸出】

輸出有n行,每行輸出對應一個輸入。輸出應是一個正整數,為菲波那契數列中第a個數的大小。

【輸入樣例】

4
5
2
19
1

【輸出樣例】

5
1
4181
1

來自一枚剛學不久小蒟蒻,

第一次發博客;

記得zhx說過:

“要想理解遞歸,就要先理解遞歸”

emmm真是一點毛病都沒有啊!!!

遞歸就是一個函數,

不停的調用自己,

為了防止死循環,

需要加特判;

遞歸主要是找到那個類似公式的東西(我也不知道叫啥);

然后寫一個函數,調用自己;

 1 #include<iostream>
 2 using namespace std;
 3 int fib(int);
 4 int main()
 5 {
 6     int n,a[200];
 7     cin>>n;
 8     for(int i=1;i<=n;i++)
 9         cin>>a[i];
10     for(int i=1;i<=n;i++)
11     {
12         cout<<fib(a[i])<<endl;
13     }
14     return 0;
15 }
16 int fib(int x)
17 {
18     if(x<=0) return 0;
19     if(x<=2) return 1;
20     return fib(x-1)+fib(x-2);
21 }

每日打卡O(∩_∩)O


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM