C语言求e的x次幂,大家帮帮忙,谢谢。
问题描述:对于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
#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));
}