C ++无限和码挂?冷冻?我不确定

时间:2013-05-06 02:29:44

标签: c++ sum infinite

好的,所以我正在尝试使用for循环而不是while循环来计算无限和,并且darn代码不起作用,我不知道为什么。我得到了两个“我来到这里”,然后什么都没有。 :\

有谁知道为什么我的代码无法工作,只是看起来像冻结或挂起?循环应该以我制作它们的方式结束,对吧? 以下是当前的问题代码

        check=0;
        cerr << "I got here" << endl;
        for (int m=1;m<m+1;m++)
        {
          cerr << "I got here" << endl;
            for (int n=1;n<n+1;n++)
            {
                if (check==0)
                {
                  anaPhi[i][j][k]=1.0/(m*m*m*n*n*n)
                  *cos(k*deltat*sqrt(5.0)*pi/4.0
                  *sqrt(m*m+4.0*n*n))
                  *sin(m*pi*i*h/4.0)
                  *sin(n*pi*j*h/2.0);
                  check=1;
                }
                else
                {
                  anaPhi[i][j][k]= anaPhi[i][j][k]
                  +1.0/(m*m*m*n*n*n)
                  *cos(k*deltat*sqrt(5.0)*pi/4.0
                  *sqrt(m*m+4.0*n*n))
                  *sin(m*pi*i*h/4.0)
                  *sin(n*pi*j*h/2.0);
                }
            }
        }
    }

我刚刚测试了此代码,此代码也不起作用!

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    int b=0;
    for (int m=1;m<m+1;m=m+2)
    {
        b=cos(b)+sqrt(b);
    }
    cout << b << endl;
    return 0;
}

3 个答案:

答案 0 :(得分:1)

您的循环条件错误。 m<m+1将如何虚假?

答案 1 :(得分:1)

还有一点:

 if (check=0)

应该是

 if (check == 0) //^^logical comparison not assignment

答案 2 :(得分:1)

我看到了几个问题。

  1. if(check=0)将始终设置为0。

  2. 因为您使用n= n+2,所以它不会破坏。因为在某些时候你得到n = 0x7FFFFFFE(最高正偶数)并且在这种情况下n + 1是> ñ。然后它包装到0x80000000(最负的符号int,仍然是偶数),n + 1仍将是&gt; ñ。如果你能够得到n = 0x7FFFFFFF,那么由于整数回绕,n + 1实际上会小于n。

  3. 似乎没有任何其他方法可以打破for循环而不是满足设置的代码。