本文提供 while 迴圈版本的級數求和,但原始碼中迴圈條件寫為 while(i<=2),僅計算前兩項(i=1,2),結果將不正確。正確條件應為 i<=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("其結果是: %f\n", f);
return 0;
}
int factorial(int num)
{
int j = 1, k = 1;
while (j <= num) {
k *= j;
j++;
}
return k;
}
flag = -flag 實現正負號交替1.0 / factorial(i) 強制浮點除法,避免整數除法截斷int,9! = 362880 仍在 int 範圍內;若擴展到 13! 需改用 long long<=2)1.0 導致整數除法結果恆為 0int factorial(int n) {
return (n <= 1) ? 1 : n * factorial(n - 1);
}
適合理解遞迴概念,但效率略低於迭代版。