【題目描述】
菲波那契數列是指這樣的數列: 數列的第一個和第二個數都為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