刚开始使用Python并做一些挑战,这是一个关于Collatz数字的问题。
然而,我在开始时遇到困难,我传递给collatz
方法的范围不是在给定范围内迭代。
我在这里缺少什么?
def collatz(number):
for i in number:
if i % 2:
return i // 2
else:
return 3 * (i + 1)
try:
print(collatz(range(0,10)))
except ZeroDivisionError:
print("Zero Division")
except TypeError:
print "Type Error"
答案 0 :(得分:2)
for i in range(0,10):
print(collatz(i))
答案 1 :(得分:2)
def f(n):
if n % 2 == 0:
return n // 2
else:
return 3 * n + 1
def a(i, n):
if i == 0:
return n
else:
return f(a(i - 1, n))
def collatz(n):
i = 0
c = 0
out = []
while c != 1:
c = a(i, n)
out.append(c)
i += 1
return out
print(collatz(6))
[6, 3, 10, 5, 16, 8, 4, 2, 1]
答案 2 :(得分:2)
简短回答:'return'语句导致函数在第一次迭代时退出,从而阻止进一步的迭代发生。
答案很长:
以下是代码运行方式的细分。
在其他一些人的帖子中回答了正确的方法。