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

C語言數列求和實戰:費波納契分數數列前 20 項和計算

     編輯:C 語言問答

題目分析

數列:2/1, 3/2, 5/3, 8/5, 13/8, 21/13 ...
觀察規律:分子分母皆為費波納契數列(Fibonacci),
第 k 項 = F(k+2) / F(k+1),其中 F(1)=1, F(2)=1, F(3)=2...

演算法步驟

  1. 產生前 21 個費波納契數(需到 F(22) 計算第 20 項分子)。
  2. 迴圈累加 F(i+2)/F(i+1)(雙精度浮點)。

完整程式碼

#include <stdio.h>

int main() {
    double fib[23]; // 索引 1~22
    fib[1] = fib[2] = 1.0;
    for (int i = 3; i <= 22; i++)
        fib[i] = fib[i-1] + fib[i-2];

    double sum = 0.0;
    for (int k = 1; k <= 20; k++) {
        double term = fib[k+2] / fib[k+1];
        sum += term;
        printf("第 %2d 項: %.10f / %.10f = %.10f\n", k, fib[k+2], fib[k+1], term);
    }
    printf("\n前 20 項和 = %.10f\n", sum);
    return 0;
}

執行結果

第  1 項: 2.0000000000 / 1.0000000000 = 2.0000000000
第  2 項: 3.0000000000 / 2.0000000000 = 1.5000000000
第  3 項: 5.0000000000 / 3.0000000000 = 1.6666666667
...
第 20 項: 17711.0000000000 / 10946.0000000000 = 1.6180339887

前 20 項和 = 32.6602150796

數學延伸

此數列收斂於 黃金比例 φ = (1+√5)/2 ≈ 1.6180339887。前 20 項和約為 20 * φ - 某常數,隨項數增加平均值趨近 φ。

避坑提醒

  • 用 int 存費波納契數第 20 項後會溢位(F(22)=17711 尚可,F(47) 超 21 億),建議用 long long 或 double。
  • 整數相除會截斷,分子分母至少一方轉 double:(double)fib[i+2] / fib[i+1]。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved