为了账号安全,请及时绑定邮箱和手机立即绑定

C语言求e的x次幂,大家帮帮忙,谢谢。

C语言求e的x次幂,大家帮帮忙,谢谢。

C
Chihiro咩咩 2016-11-28 16:55:55
问题描述:对于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));
}


查看完整回答
反对 回复 2017-04-29
  • 1 回答
  • 0 关注
  • 5233 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信