我想知道为什么这个代码在调用max()函数时打印1?我希望它返回525(可以通过collatz函数从100万以下的数字创建的最大长度)。我是python的新手,只是想知道我误解了什么!
问题:https://projecteuler.net/problem=14(我知道解决方案尚未完整)
def collatz(n):
count = 1
while n > 1:
count += 1
if n % 2 == 0:
n = n/2
else:
n = 3*n + 1
return count
def max():
greatest = 1
for i in xrange(1000000):
length = collatz(i)
if length > greatest:
length = greatest
return greatest
print max()
答案 0 :(得分:4)
greatest
的值永远不会在函数max
的for循环中更新。这一行是倒退的:
length = greatest
应该是:
greatest = length
答案 1 :(得分:0)
是的,你做错了。 使用length = most代替最大=长度