python 最长的Collat​​z序列(Euler#14)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 最长的Collat​​z序列(Euler#14)相关的知识,希望对你有一定的参考价值。

def collatz(n, result=[]):    
    if n < 0: raise ValueError
    else: result.append(int(n))

    if n == 1: return result

    if n % 2 == 0:
        return collatz(n / 2, result=result)
    else: 
        return collatz(3 * n + 1, result=result)

def max_collatz(n):
    cur_max = 0
    result = n
    for i in range(n - 1, 1, -2):
        a = len(collatz(i, result=[]))
        if a > cur_max:
            cur_max = a
            result = i
    return result

print(max_collatz(10**6))

以上是关于python 最长的Collat​​z序列(Euler#14)的主要内容,如果未能解决你的问题,请参考以下文章

Erlang中的Collat​​z序列

最大化 Collat​​z 猜想程序 Python 的效率

Collat​​z Conjecture Python - 超过 2 万亿的错误输出(仅限!)

Collat​​z C++ 代码的问题

c_cpp 使用libgmp进行Collat​​z。

算法提高 最长字符序列