[英]What's a more efficient way to make sure I'm not stuck in an infinite loop in this quicksort function? (C++)
[英]C++ Infinite Sum Code Hanging? Freezing? I'm not sure
好的,所以我嘗試使用for循環而不是while循環來計算無窮大,而織補代碼無法正常工作,我不確定為什么。 我得到兩個“我到這里”的一次,然后什么也沒有。 :\\
有誰知道為什么我的代碼無法正常工作,只是看起來像凍結或掛起? 循環應該以我制作它們的方式結束,對嗎? 這是當前的問題代碼
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;
}
您的循環條件是錯誤的。 m<m+1
怎么會是假的?
還有一點:
if (check=0)
應該
if (check == 0) //^^logical comparison not assignment
我看到幾個問題。
if(check=0)
將始終將check設置為0。
因為您使用n= n+2
,所以它永遠不會中斷。 因為在某個時刻,您到達n = 0x7FFFFFFE(最高正偶數),在這種情況下,n + 1大於n。 然后將其包裝為0x80000000(帶負號的int,偶數仍為偶數),並且n + 1仍將大於n。 如果能夠得到n = 0x7FFFFFFF,則由於整數環繞,n + 1實際上會小於n。
除了滿足條件集之外,似乎沒有其他方法可以打破for循環。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.