一、题目
二、个人理解
此题如果按常规思路做的话,必然会碰到一个问题,即其中项数的值会溢出(因为C语言最多只能保存2的64次方-1),从而变为负数。
所以我们可以换个思路,在计算第i项时可以利用到第i-1项的结果。
C语言:
#include <stdio.h>
#include <math.h>
#define eps 1e-5 //0.00001
int main()
{
double x, sum = 1.0;
scanf("%lf", &x);
double result = 1.0;
int i;
for (i = 1; ; i++) {
result = (result * x) / i;
sum += result;
if (result < eps) {
break;
}
}
printf("%.4f", sum);
return 0;
}