-1
我用下面的代碼來解決問題#14,但由於一些奇怪的原因,它沒有輸出。也許它需要太長時間才能運行? P.S.I知道max不應該是答案,但仍然沒有輸出,而對於像我這樣的較小值,我得到輸出。項目歐拉#14代碼輸出不來
#include <iostream>
long collatz(long);
int main()
{
using namespace std;
long i=3,max;
for(i=3;i<1000000;i++)
{
max=collatz(i-1);
if(collatz(i)>collatz(i-1))
{
max=collatz(i);
}
else
{
max=collatz(i-1);
}
}
cout<<max<<endl;
cin.clear();
cin.get();
}
long collatz(long n)
{
int count=0;
while(n!=1)
{
if(n%2==0)
{
n=n/2;
count+=1;
}
else
{
n=3*n+1;
}
}
return count;
}
嘗試調試器。 – MikeTheLiar
btw ...你爲什麼要多次調用遞歸函數collatz()?你不能將i和i-1的值保存在循環外部的變量中嗎?從collatzMinus1 = collatz(2)開始,並將其設置爲collatz(i)每個循環迭代 – mohaps
@mohaps你在哪裏看到'collatz'是遞歸的? –