習題6-4 使用函數輸出指定范圍內的Fibonacci數 (20分)


本題要求實現一個計算Fibonacci數的簡單函數,並利用其實現另一個函數,輸出兩正整數m和n(0)之間的所有Fibonacci數。所謂Fibonacci數列就是滿足任一項數字是前兩項的和(最開始兩項均定義為1)的數列。

函數接口定義:

int fib( int n ); void PrintFN( int m, int n ); 
 

其中函數fib須返回第n項Fibonacci數;函數PrintFN要在一行中輸出給定范圍[mn]內的所有Fibonacci數,相鄰數字間有一個空格,行末不得有多余空格。如果給定區間內沒有Fibonacci數,則輸出一行“No Fibonacci number”。

裁判測試程序樣例:

#include <stdio.h> int fib( int n ); void PrintFN( int m, int n ); int main() { int m, n, t; scanf("%d %d %d", &m, &n, &t); printf("fib(%d) = %d\n", t, fib(t)); PrintFN(m, n); return 0; } /* 你的代碼將被嵌在這里 */ 
 

輸入樣例1:

20 100 7
 

輸出樣例1:

fib(7) = 13
21 34 55 89
 

輸入樣例2:

2000 2500 8 
 

輸出樣例2:

fib(8) = 21 No Fibonacci number


int fib( int n )
{    
    int sum;
    sum=0; 
    if(n==1){
        sum=sum+1; 
    } 
    else if(n==2){
        sum=sum+1;
    }    
    else{
        sum=sum+fib(n-1)+fib(n-2);
    }
    
    return sum;
}


void PrintFN( int m, int n )
{
    int i=0,count=0;
    
    for(int j=0;j<=21;j++){        //可以自己打印下10000里面只有20左右個f數 
        i++;
            int f=fib(i);       //fib(i)返回第i個fib值 
            if(f>=m&&f<=n){
                    if(count==0){
                            printf("%d",f);
                            count++;
                    } 
                    else{
                            printf(" %d",f);
                    }
            }
    }
    if(count==0)
        printf("No Fibonacci number");
            
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM