此級數為 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,改為區域變數