【NOI】1755:菲波那契數列/ 2.2基本演算法之遞迴和自呼叫函式
阿新 • • 發佈:2019-01-06
傳送門:檢視
1755:菲波那契數列
總時間限制:
1000ms
記憶體限制:
65536kB
描述
菲波那契數列是指這樣的數列: 數列的第一個和第二個數都為1,接下來每個數都等於前面2個數之和。
給出一個正整數a,要求菲波那契數列中第a個數是多少。
輸入
第1行是測試資料的組數n,後面跟著n行輸入。每組測試資料佔1行,包括一個正整數a(1 <= a <= 20)
輸出
輸出有n行,每行輸出對應一個輸入。輸出應是一個正整數,為菲波那契數列中第a個數的大小
樣例輸入
4
5
2
19
1
樣例輸出
5 1 4181 1
斐波那契數列指的是這樣一個數列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368........
這個數列從第3項開始,每一項都等於前兩項之和。
斐波那契數列的定義者,是義大利數學家列昂納多·斐波那契(Leonardo Fibonacci),生於公元1170年,卒於1250年,籍貫是比薩。他被人稱作“比薩的列昂納多”。1202年,他撰寫了《算盤全書》(Liber Abacci)一書。他是第一個研究了印度和阿拉伯數學理論的歐洲人。他的父親被比薩的一家商業團體聘任為外交領事,派駐地點於
阿爾及利亞地區,列昂納多因此得以在一個阿拉伯老師的指導下研究數學。他還曾在埃及、敘利亞、希臘、西西里和普羅旺斯等地研究數學。
AC的程式碼如下:
#include<iostream> using namespace std; int F(int n) { int a; if(n==1||n==2)return 1; else { a=F(n-1)+F(n-2); return a; } } int main() { int n,b[1000],i; cin>>n; for(i=0;i<n;i++) cin>>b[i]; for(i=0;i<n;i++) cout<<F(b[i])<<endl; return 0; }
這道題要用遞迴,不用遞迴比較麻煩(因為我一時半會兒也沒寫好),2.2裡的題目細心想想都做得出來,不提倡直接複製,各位大佬有什麼意見可以再評論區提。