Как написать рекурсивную функцию для факториала числа?

Я смог найти факториал числа с помощью циклов, а с помощью рекурсии не получается придумать решение. Вот мой код:

a = int(input())
if a == 0:
    print(1)
else:
    for i in range(1,a):
        a = a*i
    print(a)

Желательно с объяснением.


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

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

Факториал - произведение всех натуральных чисел от 1 до n включительно, поэтому можно записать факториал так:

Факториал какого-то числа равен этому числу, умноженному на уменьшенный на единицу факториал этого же числа, то есть n! = n * (n - 1)!

def factorial(n):
    if (n == 0 or n == 1): # Факториал 1 и 0 равны 1
        return 1 # Поэтому возвращаем 1
    else: 
        return n * factorial(n-1) # Возвращаем произведение числа на факториал числа на единицу меньше
→ Ссылка