问题描述:对于0<x<1,利用公式e^x=1+x+x^2/2!+....+x^i/i!+.....,求e^x的近似值,结果精确到10^-8(即n项和减去n-1项和小于10^-9)。其中e^x表示e的x次幂。
输入:输入数据有多组,第一个为测试级数,每组占一行,由一个实数组成。
输出:对于每组输入数据,输出一行。
输入样例:3
0.3
0.4
0.5
输出样例:
1.34985881
1.49182470
1.64872127
1 回答
Wendy_Jacky
TA贡献10条经验 获得超2个赞
#include <stdio.h> #include <math.h> #define e 2.718281828459 long factorial(int n); double pow1(double x); int main() { int n; scanf("%d", &n); for (int i = 0; i < n; ++i) { double d; scanf("%lf", &d); printf("%.8f ", pow1(d)); } return 0; } /** * 计算e^x * e^x= 1 + x + x^2/2! + ... + x^i/i! + ... * @param x [description] * @return [description] */ double pow1(double x) { int i = 2; double temp; double d1 = 1.0; double d2 = x; double sum = d1 + d2; while (d1 - d2 - 0.000000001 >= 0) { d1 = d2; d2 = pow(x, i) / factorial(i); sum += d2; i++; } return sum; } /** * 求阶乘 * @param n [description] * @return [description] */ long factorial(int n) { if (n == 0 || n == 1)return 1; else return (n * factorial(n - 1)); }
- 1 回答
- 0 关注
- 5233 浏览
添加回答
举报
0/150
提交
取消