我做完了:
def collatz(n):
seq = n
if n == 1:
n = n
while n > 1:
if n % 2 == 0:
n = n // 2
else:
n = 3 * n + 1
print(seq)
用于调用此函数的corrct输出,而n = 10:
collatz(10)
10
5
16
8
4
2
1
但打印的唯一数字是n本身。
答案 0 :(得分:2)
问题是你只打印seq
,在执行while循环后,在函数开始时设置为n
。因此,您只能获得一次打印的值。
您应该在while
循环内以及开始时(第一次10
打印)打印值。示例 -
def collatz(n):
print(n)
while n > 1:
if n % 2 == 0:
n = n // 2
else:
n = 3 * n + 1
print(n)
演示 -
>>> def collatz(n):
... print(n)
... while n > 1:
... if n % 2 == 0:
... n = n // 2
... else:
... n = 3 * n + 1
... print(n)
...
>>> collatz(10)
10
5
16
8
4
2
1
答案 1 :(得分:1)
n
而不是seq
的值,此值绝对不会出现在此函数中。seq
,因为您从未使用它!if n == 1: n = n
没有做任何事情。即使n==1
,将n设置为自身也不会更改该值。