Я попытался создать следующую программу, и сначала она работала нормально.
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. Некоторые начальные числа требуют большего количества шагов, чтобы достичь, а некоторые - меньше.
Проблема:
Иногда после того, как программа проходит большое количество итераций, она показывает ОШИБКУ, и когда я нажимаю отладку, она наводит курсор на Q
в if Q≠1
.
Знаете ли вы, почему это происходит? Спасибо.