Рекурсивная функция - это функция, содержащая в теле вызов самой себя. Помимо такого вызова, в теле функции обязательно должно быть терминальное условие, которое остановит повторные вызовы, чтобы они не стали бесконечными.
deffactorial(n):
# терминальное условие, которое остановит рекурсию
if n<= 0:
return 1
# рекурсивный вызов
return n* factorial(n- 1)
factorial(5)
# 120
# тоже самое, что 5 * 4 * 3 * 2 * 1