把代码贴全了
t的公式都看不清,确定t的值会收敛吗,不会越来越大吗
#include <stdio.h>
double wang(double eps);
double meng(int N);
double chun(int M);
int main()
{
double eps;
scanf("%le",&eps);
double t=wang(eps)*2;
printf("PI = %.5lf",t);
return 0;
}
double meng(int N)
{
double sum;
int i;
sum = 1.0;
for(i=1;i<=N;i++){
sum=sum*i;
}
return sum;
}
double chun(int M)
{
double sum=1.0;
int i;
for(i=3;i<=2*M+1;i+=2){
sum=sum*i;
}
return sum;
}
double wang(double eps)
{
double t,sum=1.0;
int i;
for(i=1;;i++){
t=1.0*meng(i)/chun(i);
sum+=t;
if(t<eps) break;
}
return sum;
}
题主考虑的太复杂了,修改如下,供参考:
#include <stdio.h>
#include <math.h>
int main()
{
int i = 1;
long double eps, t = 1.0, PI = 1.0;
scanf("%le", &eps);
while (fabs(t) > eps)
{
t *= i * 1.0 / (2 * i + 1);
PI += t;
i++;
}
PI *= 2.0;
printf("PI = %.5f", PI);
return 0;
}