首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C 語言輸出區間 [m,n] 內費波納契數:陣列預生成 + 區間篩選

     編輯:程式設計疑難解答

演算法步驟

  1. 預生成費波納契數列陣列 f[],直到超過 n (或陣列上限)。
  2. 遍歷陣列,輸出滿足 m <= f[i] <= n 的元素。

參考代碼

#include 
int main() {
    int f[50]; // 足夠存放 int 範圍內的費氏數
    f[0] = 1; f[1] = 1;
    int i = 2;
    while (1) {
        f[i] = f[i-1] + f[i-2];
        if (f[i] < 0 || f[i] > 1000000) break; // 防溢位/超界
        i++;
    }
    int len = i;

    int m, n; scanf("%d %d", &m, &n);
    int first = 1;
    for (int j = 0; j < len; j++) {
        if (f[j] >= m && f[j] <= n) {
            if (!first) printf(" ");
            printf("%d", f[j]);
            first = 0;
        }
    }
    printf("\n");
    return 0;
}

關鍵細節

  • 陣列大小:int 最大約 21 億,費氏數第 46 項超界,f[50] 綽綽有餘。
  • 溢位檢測:f[i] < 0 判斷有號整數溢位 (未定義行為,但常見表現為變負)。
  • 輸入順序:題目未保證 m <= n,建議先 if (m > n) swap。
  • 格式控制:避免行尾多餘空格,用 first 旗標處理。

進階:大數費氏數

若 m,n 超過 int 範圍,需用 long long、double 或大整數庫 (GMP/手寫高精度)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved