-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy path05 factorial recursion.py
More file actions
32 lines (28 loc) · 3.02 KB
/
05 factorial recursion.py
File metadata and controls
32 lines (28 loc) · 3.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# Факториал, используя рекурсию. [O(n)]
# Создаем функцию "fact", которая вычисляет факториал.
# Эта функция принимает один входной параметр: число "x", факториал которого необходимо найти.
def fact(x):
# Создаем базовый случай.
# Базовый случай в рекурсивной функции - это часть функции, в которой описывается
# условие прекращения работы функции в целях предотвращения зацикливания.
# Если одна из вызванных рекурсивно копий функции "fact" вычисляет факториал числа 1,
# то мы выходим из этой копии функции и возвращаем число "1" предыдущей копии функции "fact" в стеке вызовов.
# Если изначально вызывается функция "fact" со входным параметром равным числу 1,
# то функция "fact" сразу возвращает число 1, поскольку факториал числа 1 равен 1.
# Ключевое слово "return" выходит из функции и возвращает какое-либо значение.
if x == 1:
return 1
# Создаем рекурсивный случай.
# Рекурсивный случай в рекурсивной функции - это часть функции, в которой функция вызывает сама себя
# в целях выполнения какой-либо задачи.
# Рекурсивно вызываем копию функции "fact" с входным параметром уменьшенным на 1, результат которой множится
# на значение входного параметра текущей копии функции "fact".
# Когда рекурсивно вызывается копия функции "fact" с входным параметром равным 1, то срабатывает базовый случай.
# Копии функции "fact" в стеке вызовов поочередно завершают свою работу и возвращают свои рассчитанные значения
# предыдущим рекурсивно вызванным копиям функции "fact" до тех пор, пока не завершит работу самая первая вызванная
# функция "fact".
else:
return x * fact(x-1)
# Пытаемся найти факториал от числа 4.
# Функция "print()" выводит некую указанную информацию на экран или на какое-либо другое устройство вывода.
print(fact(4))