Collat​​z Sequence Program不会停止运行/不会工作

时间:2019-06-07 19:58:42

标签: python collatz

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)

1 个答案:

答案 0 :(得分:1)

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

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