c语言用递归法求y=x+x2/2!+x3/3!…到第n项,n和x的值由键盘输入

2020-07-12 社会 84阅读
#include
#include
float fun(int,float,float *ans);
int main()
{
    int n;
    float x,sum=0;
    float *ans;
    printf("请输入N:\n");
    scanf("%d",&n);
    printf("请输入X(float):\n");
    scanf("%f",&x);
    ans=(float *)malloc((n+1)*sizeof(float));
    fun(n,x,ans);
    for(int i=1;i!=(n+1);i++)
    {
        sum+=*(ans+i);
    }
    printf("求得和为:%f\n",sum);
    free(ans);
}
/*
*该函数将求和多项式拆开,观察每一项,发现第(n+1)项等于
*第n项乘以(x/(n+1)),因此可递归求得求和多项式 中的每项的值,然后
*根据输入N的值开辟N+1数组,数组用于存放在递归过程中产生的前面项的值,这样
*通过一次递归,便求得所有项的值,然后根据数组中的值进行求和即可。
*/ 
float fun(int n,float x,float *ans)

    if(n==1)
    {
        *(ans+n)=x;
        return x;
    }else{
        *(ans+n)=(x/(n))*fun(n-1,x,ans);
        return *(ans+n);
    }
}

声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com