我尝试制作以下程序,起初它运行良好。
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
. 这就是 Collatz 猜想,它指出,如果遵循这个迭代,无论你从什么数字开始,它总是会降到 1。一些起始数字需要更多的步骤才能达到,而一些起始数字需要更少的步骤。
问题:
有时程序经过大量迭代后,它会显示 ERROR,当我按下调试时,它会将我的光标移到Q
.if Q≠1
你知道为什么会一直这样吗?谢谢。