过客sea 发表于 2019-3-18 12:52:50

为什么改变顺序不行,这种情况我怎样理解它的顺序

本帖最后由 过客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的位置

ba21 发表于 2019-3-18 13:06:14

我改变了pi=pi+term的位置 几个意思?不懂你说什么

过客sea 发表于 2019-3-18 13:14:37

ba21 发表于 2019-3-18 13:06
我改变了pi=pi+term的位置 几个意思?不懂你说什么

就是顺序改变了啊,第一次放在了上面,第二次放在了下面,不好意思,麻烦您对比一下看看

jackz007 发表于 2019-3-18 14:24:10

      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;
      }

ba21 发表于 2019-3-18 14:29:33

过客sea 发表于 2019-3-18 13:14
就是顺序改变了啊,第一次放在了上面,第二次放在了下面,不好意思,麻烦您对比一下看看

顺序改变,
跟谁的顺序改变,举个列子这么难?
跟它?
term=sign/n;
               pi=pi+term;
还是跟它?
      pi=pi+term;
      
      }
      p=pi*4;

要不就是跟它?
n=n+2;
pi=pi+term;

过客sea 发表于 2019-3-18 14:35:31

jackz007 发表于 2019-3-18 14:24


其实这个和我上次的问题差不多,我一开始也想是这个原因,上次您一说我就明白理解了。这一个我怎么理解这个逻辑顺序呢,总感觉应该按照第二个的步骤解题

jackz007 发表于 2019-3-18 14:41:53

pi = 0.0 + 1.0 - 1 / 3 + 1 / 5 ...... + 1 / 999997
    上面是前者的实际累加操作效果
pi = 0.0 - 1 / 3 + 1 / 5 ...... + 1 / 999997 - 1 / 999999
    上面是后者的实际累加操作效果
    哪一个结果正确要看实际问题和预期,不好一概而论。

过客sea 发表于 2019-3-18 15:10:54

jackz007 发表于 2019-3-18 14:41
上面是前者的实际累加操作效果

    上面是后者的实际累加操作效果


明白了,就是潜意识的还理解不透彻,就怕以后遇到类似问题再犯错误,谢谢亲
页: [1]
查看完整版本: 为什么改变顺序不行,这种情况我怎样理解它的顺序