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

C語言級數求和:計算 f = 1 - 1/2! + 1/3! - ... + 1/9! 的三種迴圈寫法對比

     編輯:關於C

數學問題

計算交錯級數 f = Σ (-1)^(i-1) / i!,i = 1..9。這是 e⁻¹ 的泰勒展開部分和。

三種迴圈實作對比

1. do-while 版(原始碼)

int i = 1; double f = 0; int flag = 1;
do {
    f += flag * 1.0 / factorial(i);
    flag = -flag;
    i++;
} while (i <= 9);

2. while 版

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

3. for 版(最推薦)

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

階乘函式實作

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

執行結果

其結果是: 0.632121

真實值 1 - 1/e ≈ 0.6321205588,9 項已相當精確。

優化建議

  • 避免重複計算階乘:迴圈中累乘 fact *= i 即可得到 i!
  • 使用 double 而非 float 提高精度
  • 若需高精度,可引入 long double 或任意精度庫

教學價值

同一數學問題的三種迴圈寫法對比,幫助初學者理解 for/while/do-while 的適用場景與等價轉換。

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