使用函數輸出指定範圍內的Fibonacci數

本題要求實現一個計算Fibonacci數的簡單函數,並利用其實現另一個函數,輸出兩正整數m和n(0<m≤n≤10000)之間的所有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){//返回斐波拉契數列的第n項
   
    if(n==1||n==2)
    return 1;
    else
    return fib(n-1)+fib(n-2);


}

void PrintFN(int m,int n){//返回m到n之間的斐波拉契數列

    int count=0;
    for(int i=1;fib(i)<=n;i++)
    {
        if(fib(i)>=m)
      { count++;
    if(count==1)
    printf("%d",fib(i));//count=1,說明爲第一個數,第一個數前面不加空格
    else
    printf(" %d",fib(i));
    
      }
    }
    if(count==0)
    printf("No Fibonacci number\n");
}

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章