Рекурсия в Python (факториальная функция) - PullRequest
0 голосов
/ 10 июля 2020

Надеюсь, это не слишком глупый вопрос, но почему оператор return 1 в этом Python коде возвращает факториал числа? Это также происходит для return True, что, как я понимаю, эквивалентно return 1

def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n-1)

Ответы [ 2 ]

1 голос
/ 10 июля 2020

n == 0 - это базовый вариант рекурсивной функции. Факториал 0 равен 1: ссылка

Как только базовый случай возвращает 1, выражение return n * factorial(n-1) будет иметь форму: return n * 1 и т. Д.

0 голосов
/ 10 июля 2020

в python, когда вы умножаете число на True, оно будет работать так, как будто вы умножаете на единицу, а когда вы умножаете число на False, оно будет работать как при умножении на ноль.

так что это вот почему вы получаете факториал числа, даже если вы используете:

return True

вместо

return 1

, но если вы вызовете factorial (0), вы получите True вместо 1 .

...