unsupported operand type(s) for +: 'int' and 'NoneType'

def f(n):
    if n <= 1:
        return 1;
    elif n % 2:
        n + f(n - 2)
    else:
        n * f(n - 1)

print(f(84))

В какой-то определенный момент функция решает возвращать NoneType, только я не понимаю почему. В чем проблема?


Ответы (1 шт):

Автор решения: Georgiy

Потому что код только при одном условии возвращает значение (это при условии n<=1), а в остальных случаях возвращает None. return поможет исправить ошибку.

def f(n):
    if n <= 1:
        return 1
    elif n % 2:
        return n + f(n - 2)
    else:
        return n * f(n - 1)

print(f(84))
>> 148176
→ Ссылка