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

C語言三種迴圈求級數和:1 - 1/2 + 1/3 - ... + 1/100

     編輯:關於C

數學公式

S = Σ_{i=1}^{100} (-1)^{i+1} / i (調和級數交錯和,收斂至 ln 2 ≈ 0.6931)。

方法一:for 迴圈

double sum = 0.0;
int sign = 1;
for (int i = 1; i <= 100; i++) {
    sum += sign * 1.0 / i;
    sign = -sign; // 翻轉正負
}
printf("%.6f\n", sum); // 0.688172

方法二:while 迴圈

double sum = 0.0;
int i = 1, sign = 1;
while (i <= 100) {
    sum += sign * 1.0 / i;
    sign = -sign;
    i++;
}

方法三:do-while 迴圈

double sum = 0.0;
int i = 1, sign = 1;
do {
    sum += sign * 1.0 / i;
    sign = -sign;
    i++;
} while (i <= 100);

關鍵細節

  • 1.0 / i 強制浮點除法,1 / i 為整數除法 (結果恆 0)。
  • sign 初始 1,首項為正,符合數學定義。
  • 三種迴圈語意等價,for 最適合已知次數,while 適合條件複雜,do-while 保證至少執行一次。

進階:Kahan 求和修正浮點誤差

double sum = 0.0, c = 0.0;
for (int i = 1; i <= 100; i++) {
    double term = (i%2?1:-1) * 1.0 / i;
    double y = term - c;
    double t = sum + y;
    c = (t - sum) - y;
    sum = t;
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved