已知函数ex可以展开为幂级数1+x+x2/2!+x3/3!+⋯+xk/k!+⋯。现给定一个实数x,要求利用此幂级数部分和求ex的近似值,求和一直继续到最后一项的绝对值小于0.00001。
输入格式:
输入在一行中给出一个实数x∈[0,5]。
输出格式:
在一行中输出满足条件的幂级数部分和,保留小数点后四位。
输入样例:
1.2
输出样例:
3.3201
思路:
通过循环依次求出每一项,再加起来,最后输出。值得注意的地方是题目要求最后一项绝对值需要小于0.00001 ,我的方法是去掉for循环的结束条件,这样就会一直循环直到得到一个满足条件的项,用break打断。
源代码:
#include <stdio.h>
int main()
{
double x, s=1.0;
double result=1.0;
scanf("%lf", &x); //输入幂
for (int i=1; ;i++) {
result=(result*x)/i; //求出最后一项
s+=result;
if(result<0.00001){ //最后一项小于0.00001时结束循环
break;
}
}
printf("%.4f",s);
return 0;
}
运行结果:
这道题主要在于对循环的利用,我看到题目的第一感觉是用while循环来解决,然后发现结束条件不确定是一大问题,需要在循环前计算项数,反而更加复杂了,所以关键便在于运用无限循环再利用break打断。