1. 程式人生 > >1201:菲波那契數列

1201:菲波那契數列

時間限制: 1000 ms 記憶體限制: 65536 KB
提交數: 2953 通過數: 1731

【題目描述】

菲波那契數列是指這樣的數列: 數列的第一個和第二個數都為1,接下來每個數都等於前面2個數之和。
給出一個正整數a,要求菲波那契數列中第a個數是多少。

【輸入】

第1行是測試資料的組數n,後面跟著n行輸入。每組測試資料佔1行,包括一個正整數a(1≤a≤20)。

【輸出】

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

【輸入樣例】

4
5
2
19
1

【輸出樣例】

5
1
4181
1

【來源】

No

【程式碼】

#include <iostream>
#include <cstdio>
#include <cstdlib>

using namespace std;

int feibo(int n)    //斐波那契數列演算法
{
    if(n==1||n==2)
    {
        return 1;
    }
    else
    {
        return feibo(n-1)+feibo(n-2);
    }
}

int main()
{
    int n;
    int a[1000
]; cin>>n; for(int i=0;i<n;i++) { cin>>a[i]; cout<<feibo(a[i])<<endl; } return 0; }

【解題思路】

這道題很簡單,用遞迴很簡單的就會做出來,因為每一個數都等於前兩個數相加,所以就可以不停的呼叫遞推歸的函式進行加法,但是一定要注意初始化。