#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);
}
}