因此,在浏览Wikipedia时,我偶然发现了this other SO question,所以我决定编写一个简单的python程序
while True:
x = int(input("Enter a number: "))
n=0
while True:
if (x % 2) == 0:
x = x/2
n += 1
print(x)
else:
x = 3*x +1
n+=1
print(x)
if x == 1:
break
print("N = %d" %(n))
首先,我使用随机数,然后决定测试Wikipedia文章所代表的一些较大的数字。该程序运行良好,直到Wikipedia的“示例”部分上的75,128,138,247,之前它与步骤数完全匹配,然后它随机地对N表示“ 512”(步骤数。我只是不明白为什么。有人可以吗?帮助吗?
答案 0 :(得分:3)
浮点除法可能会导致问题(注意输出为浮点数),因此请使用整数:
更改
x = x/2
进行整数除法(您的print
对应于Python 3,因此可用)
x = x // 2