用递归方法求px(x,n)=x-x^2+x^3-x^4+........(-1)^(n-1)x^n,下面程序有什么问题,输出只是x的值。

# include <stdio.h>
# include<math.h>

float px(float x,int n)
{
/* float term=1.0;
float sum=0,sign=-1.0;
while(n)
{ sign*=-1;
term=term*x*sign;
n--;
sum=sum+term;
}这里是我自己写的非递归算法,验证用*/
float sum=0;
if(n=1)
return x;
else
return x*(1-px(x,n-1));

}
int main()
{

int n=4;
float x=3.0,sum=0;
sum=px(x,n);
printf("%f",sum);
return 0;
}

你的if(n=1)写错了,应为:
if(n==1)

你的非递归也写错了,sign*=-1; term=term*x*sign;应为:
temp=-1.0;
........
while(n)
{term=-term*x; //sign这个变量不用了。
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答