Collat​​z 序列程序不会停止 running/won 不工作

Collatz Sequence Program won't stop running/won't work

https://projecteuler.net/problem=14

我有一个程序可以计算每个数字的 collat​​z 序列的长度。 我尝试使用较小的数字来查看是否是因为我的程序太慢但即使这样程序也不会停止。为什么?我只能认为我的 while 循环永远不会停止,但它应该给出问题。谢谢

count = 0
count1 = 0
for n in range(2,10):
    count = 0
    j = n
    while j != 1:
        if j%2 == 0:
            j = j/2
        if j%2 != 0:
            j = 3*j+1
        count += 1
    if count > count1:
        count1 = count
print (count1)

问题源于 while 循环中的 if 对:

while j != 1:
    if j%2 == 0:
        j = j/2
    if j%2 != 0:
        j = 3*j+1

如上所写,条件从未实现。 j 达到值 1 的唯一方法是通过第一个 if,但第二个 if(因为 1 是奇数)立即将其增加到4,造成无限循环。

一个 else 就可以了:

while j != 1:
    if j % 2 == 0:
        j = j / 2
    else:
        j = 3 * j + 1

    count += 1