max collatz sequence python 3

Question:

I am trying to solve a problem where recursion is a must. The tasks is: Write a function that takes in an integer n and returns the highest integer in the corresponding Collatz sequence.

My solution is this:

collatz = []

def max_collatz(num):
    collatz.append(num)

    if num == 1:
        return max(collatz)
    else:
        return max_collatz(num / 2) if num%2 == 0 else max_collatz((3 * num) + 1)

However, I need to find a way to solve it without using a list outside of the function. I really couldn’t find a solution, is there any?

Asked By: mustafa bodur

||

Answers:

It’s either the current number or the largest in the rest of the sequence.

def max_collatz(n):
    if n == 1:
        return 1
    elif n % 2:
        return max_collatz(3 * n + 1)
    else:
        return max(n, max_collatz(n // 2))
Answered By: Kelly Bundy
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.