1. 程式人生 > >P1-2017級演算法第一次上機 A 水水的斐波那契數列

P1-2017級演算法第一次上機 A 水水的斐波那契數列

題目描述

相信大家都學過斐波那契數列,雖然很簡單,但是斐波那契數列卻是很重要的哦,那麼讓我們來複習一下斐波那契數列吧!

輸入

多組資料輸入

每行一個整數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         return
1; 15 else 16 return feibonacci(n-1) + feibonacci(n-2); 17 }