【发布时间】:2021-02-24 10:47:02
【问题描述】:
专家。
我正在尝试定义一个函数 (collatz):
- 要求一个号码。如果是偶数则打印
number // 2,如果是奇数则打印3 * number + 1。 (好的) - 无论结果是什么,都必须进入一个循环,直到结果为 1。(NOK)
所以,我不知道,因为结果未使用并且处于无限循环中。有什么建议吗?
def collatz():
number = int(input('Enter the number: '))
x = number % 2
while number != 1:
if x == 0:
print(f'{number // 2}')
else:
print(f'{3 * number + 1}')
number = number
print(f'{collatz()}')
【问题讨论】:
-
只需执行一次
number = number // 2或number = 3 * number + 1,然后只需执行一次print(number)。 -
您不必担心,Collatz 猜想确保它始终收敛到 1。您可以尝试添加退出条件,但无法测试它是否有效.或者,您可以给它一个最大运行时间(比如说 30 秒),并检查每个循环是否超过执行时间。
-
您没有更新数字的值,它在循环中保持不变