Fortran 代码中的循环不遵守循环规则

A loop in fortran code doesn't obey loop rules

首先,我是 Fortran 的新手。我试图在 0.0000005 的公差范围内找到 1/e 的值。我使用了 1/e 的求和表示,即 (epsilon) n 从零到无穷大 ((-1)^n)/n!。我从n=2开始,当值为1/n!小于我的公差,程序将停止并打印计算出的总值。但是我的程序只转到 n=3 并且只打印 1/3 的值!这是 1.666666。 !程序被编辑。编辑后的表格计算出我 wanted.Before 外部 while 的条件是 (num3<5e-8) 并且它没有增加 n。现在n增加问题解决了。

   program Ecalculator
   implicit none

   integer :: mult,num1,n,num4,num5
   real :: summ,num3,fact

   mult=1
   n=2.0
   fact=1.0
   summ=0.0

      DO WHiLE(n<13)
      fact=n
      num1=n-1

             DO WHiLE(num1>0)
             fact=fact*num1;
             num1=num1-1;

             END DO

       fact=fact*mult;
       num3=1.0/fact;
       mult=mult*(-1);
       summ=summ+num3;
       n=n+1;

        END DO

    print *, summ
    read  *, num5

    end program Ecalculator

看起来阶乘计算不正确:行 fact=num4*num1 可能没有按照您的要求执行,因为 num4 只是被分配为 n 并且从始至终都没有改变内循环。我不认为你需要两个变量 num4fact;你可以将它们组合成一个变量。