1

以下のプログラムを作ってみたところ、最初はうまくいきました。

Label 1
Input "n=", Q
If Q≤0
...Then
Goto 1
Else
Label 2
((Q-2int(Q/2))(3Q+1)+(1-Q+2int(Q/2))(Q/2))->Q
Display Q
If Q≠1
Then
Goto 2
Else
Goto 1

これが行うことになっているのは、開始番号を入力することであり、偶数の場合はQ/2. 奇数の場合は3Q+1、結果を に格納しQます。これがコラッツ予想であり、この反復を続けると、どの数字から始めても常に 1 になるというものです。最初の数字の中には、到達するまでにより多くのステップを必要とするものもあれば、より少ないステップしか必要としないものもあります。

問題:

プログラムが多数の反復を行った後、エラーが表示され、デバッグを押すと、カーソルがQinの上に移動することがありますif Q≠1

なぜこれが起こり続けるのか知っていますか?ありがとう。

4

1 に答える 1

0

ほとんどの人がこのパズルを解く際に克服しなければならないハードルは、膨大な数によるオーバーフローです。IIRC の 23 あたりで発生すると思います。そうかもしれませんが、カーソルが Q の上に移動する理由がわかりません。

于 2010-11-03T06:26:10.803 に答える