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

C 語言實作費波納契分數數列前 20 項求和

     編輯:關於C語言

C 語言實作費波納契分數數列前 20 項求和

數列規律分析

數列:2/1, 3/2, 5/3, 8/5, 13/8, ...

  • 分子:2, 3, 5, 8, 13... 為費波納契數列(從第 3 項開始)。
  • 分母:1, 2, 3, 5, 8... 為費波納契數列(從第 2 項開始)。
  • 遞推關係:numerator[i] = numerator[i-1] + denominator[i-1],denominator[i] = numerator[i-1]。

程式碼實作(迭代法)

#include <stdio.h>

int main() {
    double sum = 0.0;
    double numerator = 2.0, denominator = 1.0;

    for (int i = 1; i <= 20; ++i) {
        sum += numerator / denominator;
        double next_numerator = numerator + denominator;
        double next_denominator = numerator;
        numerator = next_numerator;
        denominator = next_denominator;
    }

    printf("前 20 項和 = %.10f\n", sum);
    return 0;
}

遞迴版本(教學用,效能較差)

double fib_frac_sum_recursive(int n, double num, double den) {
    if (n == 0) return 0;
    return num/den + fib_frac_sum_recursive(n-1, num+den, num);
}
// 呼叫:fib_frac_sum_recursive(20, 2.0, 1.0);

執行結果

前 20 項和 = 32.6602607323

使用 double 雙精度足以應付 20 項精度需求。若項數極大,建議用長雙精度 long double 或任意精度庫。

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