-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy path07 counting elements recursion.py
More file actions
42 lines (36 loc) · 3.77 KB
/
07 counting elements recursion.py
File metadata and controls
42 lines (36 loc) · 3.77 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
33
34
35
36
37
38
39
40
41
42
# Подсчет элементов, используя рекурсию. [O(n)]
# Создаем функцию "count", которая принимает один входной параметр:
# список "list_of_elem", содержащий элементы для подсчета.
def count(list_of_elem):
# Создаем базовый случай.
# Базовый случай в рекурсивной функции - это часть функции, в которой описывается
# условие прекращения работы функции в целях предотвращения зацикливания.
# Если одна из вызванных рекурсивно копий функции "count" принимает в качестве параметра список,
# содержащий 0 элементов, то мы выходим из этой копии функции "count" и возвращаем число "0"
# предыдущей копии функции "count" в стеке вызовов, поскольку количество элементов в списке с 0 элементов
# всегда равно 0.
# Если изначально вызывается функция "count", которая принимает в качестве параметра список,
# содержащий 0 элементов, то функция "count" сразу возвращает число "0", поскольку количество элементов
# в списке с 0 элементов всегда равно 0.
# Функция "len()" возвращает количество элементов в списке.
# Ключевое слово "return" выходит из функции и возвращает какое-либо значение.
if len(list_of_elem) == 0:
return 0
# Создаем рекурсивный случай.
# Рекурсивный случай в рекурсивной функции - это часть функции, в которой функция вызывает сама себя
# в целях выполнения какой-либо задачи.
# Рекурсивно вызываем копию функции "count" со списком "list_of_elem" в качестве входного параметра,
# за исключением первого элемента в этом списке, при этом результат работы этой рекурсивно вызванной копии
# функции "count" увеличивается на 1.
# Когда рекурсивно вызывается копия функции "count", которая принимает в качестве параметра список,
# содержащий 0 элементов, то срабатывает базовый случай.
# Копии функции "count" в стеке вызовов поочередно завершают свою работу
# и возвращают свои рассчитанные значения предыдущим рекурсивно вызванным копиям функции "count" до тех пор,
# пока не завершит работу самая первая вызванная функция "count".
else:
return 1 + count(list_of_elem[1:])
# Создаем список чисел "my_list".
my_list = [2, 0, 6, 9, 7, 7]
# Попытаемся подсчитать элементы в списке "my_list".
# Функция "print()" выводит некую указанную информацию на экран или на какое-либо другое устройство вывода.
print(count(my_list))