帮忙看看这个C语言程序,我fun哪儿写错了,我没看出来

2025-05-13 22:54:35
推荐回答(2个)
回答1:

你这个算法不成啊,你再看看a和b的值,实际上就是求阶乘,这么大的数值,在中间过程中都溢出的不成样子了,你需要将算法改为:
PI/2=1+1/3+(1/3)*(2/5)+(1/3)*(2/5)*(3/7)+....
明白了吗?

回答2:

double fun(double eps)
{double t=1.0/3,sum=1;
 for(int i=2;t>=eps;i++)
 {
  sum+=t;
  t*=(double)i/(i+i+1);
 }
 return sum*2;
}

t的初值错了。