为什么改变顺序不行,这种情况我怎样理解它的顺序
本帖最后由 过客sea 于 2019-3-18 15:11 编辑#include<stdio.h>
#include<math.h>
int main()
{
int sign=1;
double pi=0.0,n=1.0,term=1.0,p;
while(fabs(term)>=1e-6)
{
pi=pi+term;
n=n+2;
sign=-sign;
term=sign/n;
}
p=pi*4;
printf("p=%10.8f\n",p);
return 0;
}
#include<stdio.h>
#include<math.h>
int main()
{
int sign=1;
double pi=0.0,n=1.0,term=1.0,p;
while(fabs(term)>=1e-6)
{
n=n+2;
sign=-sign;
term=sign/n;
pi=pi+term;
}
p=pi*4;
printf("p=%10.8f\n",p);
return 0;
}
两次执行结果不一样,我改变了pi=pi+term的位置 我改变了pi=pi+term的位置 几个意思?不懂你说什么 ba21 发表于 2019-3-18 13:06
我改变了pi=pi+term的位置 几个意思?不懂你说什么
就是顺序改变了啊,第一次放在了上面,第二次放在了下面,不好意思,麻烦您对比一下看看 sign = 1 ;
term = 1.0 ;
pi = 0.0 ;
while(fabs(term) >= 1e-6) {
pi = pi + term; // term = 1.0 的初始值被用上了
n = n + 2 ;
sign = - sign ;
term = sign / n ;
}
sign = 1 ;
term = 1.0 ;
pi = 0.0 ;
while(fabs(term) >= 1e-6) {
n = n + 2 ;
sign = - sign ;
term = sign / n ;// term = 1.0 的初始值被丢弃了
pi = pi + term;
} 过客sea 发表于 2019-3-18 13:14
就是顺序改变了啊,第一次放在了上面,第二次放在了下面,不好意思,麻烦您对比一下看看
顺序改变,
跟谁的顺序改变,举个列子这么难?
跟它?
term=sign/n;
pi=pi+term;
还是跟它?
pi=pi+term;
}
p=pi*4;
要不就是跟它?
n=n+2;
pi=pi+term; jackz007 发表于 2019-3-18 14:24
其实这个和我上次的问题差不多,我一开始也想是这个原因,上次您一说我就明白理解了。这一个我怎么理解这个逻辑顺序呢,总感觉应该按照第二个的步骤解题 pi = 0.0 + 1.0 - 1 / 3 + 1 / 5 ...... + 1 / 999997
上面是前者的实际累加操作效果
pi = 0.0 - 1 / 3 + 1 / 5 ...... + 1 / 999997 - 1 / 999999
上面是后者的实际累加操作效果
哪一个结果正确要看实际问题和预期,不好一概而论。 jackz007 发表于 2019-3-18 14:41
上面是前者的实际累加操作效果
上面是后者的实际累加操作效果
明白了,就是潜意识的还理解不透彻,就怕以后遇到类似问题再犯错误,谢谢亲
页:
[1]