0
我試圖解決項目euler上的問題14,而我最初的蠻力嘗試讓我難住。出於某種原因,代碼遇到了13和19之間的循環。我不認爲我可以正確地繼續使用非粗暴的方法,除非我可以首先獲得蠻力方法,至少可以正確計算。 我的代碼如下所示:Collatz猜想代碼13和19之間的「彈跳」
unsigned int loop(unsigned int n)
{
unsigned int count = 0;
while(1)
{
while(is_even(n))
{
n /= 2;
}
if(n > 1)
n = (n * 3) + 1;
else
break;
count++;
printf("%d,", n);
}
printf("%d\n", n);
return count;
}
is_even(N)被計算爲 「N & 0×01」。
有誰能告訴我爲什麼輸出是連續的(理論上是無止境的)「13,19」流重複?
謝謝,當我寫這個函數時,我顯然沒有給予足夠的關注! –