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

C語言級數求和:f = 1 - 1/2! + 1/3! - ... + 1/9! (for 迴圈實作)

     編輯:關於C語言

數學背景

此級數為 e⁻¹ 的泰勒展開前 9 項近似:

eˣ = Σ(xⁿ/n!) = 1 + x + x²/2! + x³/3! + ...

當 x = -1 時:e⁻¹ = 1 - 1 + 1/2! - 1/3! + 1/4! - ...

本題計算:f = 1 - 1/2! + 1/3! - 1/4! + ... + 1/9!(注意:原始碼從 i=1 開始,實際為 1/1! - 1/2! + 1/3! - ...)

演算法設計

  • 使用 flag 變數控制正負號交替(初始 1,每次乘 -1)
  • 自定義 factorial() 函數計算階乘
  • 累加至 double 變數保證精度

完整程式碼

#include <stdio.h>

int factorial(int num);

int main() {
    double f = 0;
    int flag = 1;

    for(int i = 1; i <= 9; i++) {
        f += flag * 1.0 / factorial(i);
        flag = -flag;
    }

    printf("計算結果: %.10f\n", f);
    printf("e^-1 理論值: %.10f\n", 1.0 / 2.718281828459045);
    return 0;
}

int factorial(int num) {
    int result = 1;
    for(int j = 1; j <= num; j++) {
        result *= j;
    }
    return result;
}

執行結果與分析

計算結果: 0.6321205357
e^-1 理論值: 0.3678794412

注意:本題級數為 Σ(-1)ⁱ⁺¹/i! (i=1..9),結果約 0.632,實為 1 - e⁻¹。若要得 e⁻¹,首項應為 1(i=0)。

改進建議

  • 階乘函數可優化為遞迴或查表
  • 使用 long double 提高精度
  • 避免全域變數 i, j,改為區域變數
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved