同樣計算 f = 1 - 1/2! + 1/3! - ... + 1/9!,但使用 while 迴圈。
int i = 1;
while(i <= 2) { // 錯誤:應為 i <= 9
f += flag * 1.0 / factorial(i);
flag = -flag;
i++;
}
此錯誤導致僅計算前兩項(1/1! - 1/2! = 0.5),而非完整 9 項。
#include <stdio.h>
int factorial(int num);
int main() {
int i = 1;
double f = 0;
int flag = 1;
while(i <= 9) { // 修正:9 而非 2
f += flag * 1.0 / factorial(i);
flag = -flag;
i++;
}
printf("while 迴圈結果: %.10f\n", f);
return 0;
}
int factorial(int num) {
int j = 1, k = 1;
while(j <= num) {
k *= j;
j++;
}
return k;
}
| 迴圈類型 | 適用場景 | 本題適用性 |
|---|---|---|
| for | 已知迴圈次數 | ★★★ 最適合 |
| while | 未知次數,依條件判斷 | ★★ 可用但需小心邊界 |
| do-while | 至少執行一次 | ★ 非必要 |