sum=sum*i/(2* i+1)和sum*=i/(2*i+1)的区别#include #include < conio.h >#include double fun( double eps){double t=1.0,sum=1.0;int i=1;while (sum>=eps) /* 当某项大于精度要求时,继续求下一项*/{sum=sum*i/(2* i+1); /* 求
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/20 00:35:59
sum=sum*i/(2* i+1)和sum*=i/(2*i+1)的区别#include #include < conio.h >#include double fun( double eps){double t=1.0,sum=1.0;int i=1;while (sum>=eps) /* 当某项大于精度要求时,继续求下一项*/{sum=sum*i/(2* i+1); /* 求
sum=sum*i/(2* i+1)和sum*=i/(2*i+1)的区别
#include
#include < conio.h >
#include
double fun( double eps)
{
double t=1.0,sum=1.0;
int i=1;
while (sum>=eps) /* 当某项大于精度
要求时,继续求下一项*/
{sum=sum*i/(2* i+1); /* 求多
项式的每一项*/
t=t+sum; /*累加求和*/
i++;
}
return 2*t;
}
void main ()
{
double x;
printf ("Input eps : ") ;
scanf("%lf",&x);
printf("\neps =%lf, PI =%lf\n",
x, fun(x));
}
#include
#include < conio.h >
#include
double fun( double eps)
{int i=1;
double t=1.0,sum=0;
while(t>=eps)
{
sum+=t;
t*=i/(2*i+1);
++i;
}
return 2*sum;
}
void main ()
{
double x;
printf ("Input eps : ") ;
scanf("%lf",&x);
printf("\neps =%lf, PI =%lf\n",
x, fun(x));
}为什么结果不一样?
sum=sum*i/(2* i+1)和sum*=i/(2*i+1)的区别#include #include < conio.h >#include double fun( double eps){double t=1.0,sum=1.0;int i=1;while (sum>=eps) /* 当某项大于精度要求时,继续求下一项*/{sum=sum*i/(2* i+1); /* 求
假如i=5时就退出while循环,
一:
sum+=t;
\x05t*=i/(2*i+1); //当i=5时,这个 t*= 5/11 ,sum 并没有把 i=5时的 t 值相加
\x05++i;
你这样写相当于 while do 先判断再加
二:
sum=sum*i/(2* i+1); // 当i=5时,这个 sum*= 5/11 \x05\x05\x05\x05\x05\x05\x05
\x05\x05t=t+sum; // 这里 把 i=5时的 值加到 t 了
\x05\x05i++;
这一段相当于 do while 先加再判断
多加一项,所以两者的结果不一样