How to return recursion result and recursion steps as a tuple in Python?

Viewed 27

I am trying to return a tuple (recursion result, recursion steps) in this manner. My code adds all even numbers and returns the sum of all even numbers and number of recursive steps. If odd, then it returns 0 and number of recursive steps.

I am getting a Type Error in my value, step variables...why is that so?

def get_sum_evens(numbers):
    if not numbers:
        return 0, 0
    elif numbers[0] % 2 == 0:
        value, step = get_sum_evens(numbers[1:])
        return numbers[0] + value, step + 1
    elif numbers[0] % 2 != 0:
        steps = get_sum_evens(numbers[1:])
        return 0, steps + 1
    
print(get_sum_evens([2, 3, 5, 6]))
print(get_sum_evens([]))
print(get_sum_evens([1, 3, 5, 7]))
print(get_sum_evens([9, 5, 15, 11, 23]))
1 Answers

You probably mean you got a TypeError, not "TextError".

steps = get_sum_evens(numbers[1:])

steps is now a tuple, and you're adding + 1 to it.

You'll always want to do:

value, steps = get_sum_evens(...)
Related