【发布时间】:2019-07-17 23:04:31
【问题描述】:
输入值后,我没有从解释器获得任何输出。
这是我的代码:
number = int(input("Enter the number to test:"))
count = 0
if number % 2 == 0:
while number > 1:
number /= 2
count += 1
else:
while number > 1:
number = (3 * number) + 1
count += 1
print("Iteration count: " + count)
输入 = 11 的预期输出为 15
编辑: Collatz 猜想(上图)使用以下算法:如果 n 是偶数,则除以 2,否则乘以 3 并加 1。重新开始,直到得到 1。
【问题讨论】:
-
因为
number在奇数时总是大于1,而你进入了无限循环 -
您需要将偶数/奇数测试移入循环。就目前而言,看看如果它是奇数会发生什么:它只是保持三倍并永远加 1,因为它将保持 > 1
. Also, changenumber /= 2` 到number //= 2,否则它将被转换为浮点数。 -
number = (3 * number) + 1将继续增加值,因此while number > 1:将始终为 True。正如 Fedrico 指出的那样。 -
因为
number = (3 * number) + 1将无限。number永远不会小于一。所以,while 循环永远不会结束。 -
"如果 n 是偶数,则除以 2,否则乘以 3 并加 1。重新开始,直到得到 1。" - 这不是您的代码所做的。您应该将 if 语句放入循环中。到目前为止,您的算法与 Collatz 猜想没有任何关系
标签: python python-3.x