c语言递归函数,程序写出来运行错误,不知如何调试设计函数求π:π/4=1-1/3+1/5-1/7+…

#include<stdio.h>
float PI(int x)
{
if(x<=0) return(0);
else
{
if(x<2) return(0);
else
return(PI(x-2)+(1/(2*(x-1)-1)-1/(2*x-1)));
}
}
void main()
{int x;float y;
printf("input a number:");
scanf("%d",&x);
if(x%2==0)
y=PI(x);
else
y=PI(x-1)+1/(2*x-1);
printf("PI=%f\n",y/4);
}

第1个回答  2011-11-28
这样改。
#include<stdio.h>
float PI(int x)
{
if(x<=0) return(0);
else
{
if(x<2) return(0);
else
return(PI(x-2)+(1.0/(2*(x-1)-1)-1.0/(2*x-1)));//改成1.0 否则默认取整
}
}
void main()
{int x;float y;
printf("input a number:");
scanf("%d",&x);
if(x%2==0)
y=PI(x);
else
y=PI(x-1)+1.0/(2*x-1);//1.0
printf("PI=%f\n",y*4);//y*4不是y/4
}本回答被提问者采纳
第2个回答  2011-11-28
#include <stdio.h>
#include <_math.h>
void main()
{
float pi,n,t;
int s;
t=1;
pi=0;
n=1.0;
s=1;
while(fabs(t)>le-6)
{
pi+=t;
n+=2;
s=-s;
t=s/n;
}
pi=pi*4;
printf("pi=%10.6f\n",pi);
]

这是谭浩强版本上的程序 你写的那个递归调用不正确
第3个回答  2011-11-28
#include<stdio.h>
#include<math.h>
float PI(int x)
{
float a;
if(x==1)
return 1;
else{
a=pow(-1.0,x-1)/(2*x-1);
return PI(x-1)+a;
}

}
void main()
{int x;float y;
printf("input a number:");
scanf("%d",&x);
printf("PI=%f\n",PI(x)*4);
}
相似回答