P1-2017級演算法第一次上機 A 水水的斐波那契數列
阿新 • • 發佈:2018-12-22
題目描述
相信大家都學過斐波那契數列,雖然很簡單,但是斐波那契數列卻是很重要的哦,那麼讓我們來複習一下斐波那契數列吧!
輸入
多組資料輸入
每行一個整數n (0<n<=30)
輸出
對於每組資料,輸出一行,為斐波那契數列第n 項的值
輸入樣例
1
2
3
4
輸出樣例
1
1
2
3
思路
用一個一維陣列f(n)來表示斐波那契數列第n項的值。
則根據定義,後一項等於前兩項之和,很容易得到:f(n) = f(n-1) + f(n-2)。
有兩種做法,遞迴和迴圈。
雖然很多人都說遞迴好理解,但是作為一個遞迴是同學教的、基礎完全沒打紮實的人來說,能用迴圈就不會用遞迴。
直接上程式碼吧,沒啥好說的。
1 //迴圈 2 #include<stdio.h> 3 int main() 4 { 5 int n; 6 int f[31]; 7 int i; 8 f[1] = 1;f[2] = 1; 9 for(i = 3;i <= 30;i++){ 10 f[i] = f[i-1] + f[i-2]; 11 } 12 while(scanf("%d",&n) != EOF){ 13 printf("%d\n",f[n]); 14 } 15 }
1 //遞迴 2 #include<stdio.h> 3 int main() 4 { 5 int n; 6 while(scanf("%d",&n) != EOF){ 7 printf("%d\n",feibonacci(n)); 8 } 9 } 10 11 int feibonacci(int n) 12 { 13 if(n == 1 || n == 2) 14 return1; 15 else 16 return feibonacci(n-1) + feibonacci(n-2); 17 }