projecteuler14:为函数赋值?

时间:2014-07-01 02:43:34

标签: python loops variables assign

我想知道为什么这个代码在调用max()函数时打印1?我希望它返回525(可以通过collat​​z函数从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()

2 个答案:

答案 0 :(得分:4)

greatest的值永远不会在函数max的for循环中更新。这一行是倒退的:

length = greatest

应该是:

greatest = length

答案 1 :(得分:0)

是的,你做错了。 使用length = most代替最大=长度