
Болтушкин Л.С., группа 712-2, лабораторная 3.docx
.pdfМинистерство науки и высшего образования Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования
ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОННИКИ (ТУСУР)
Кафедра комплексной информационной безопасности электронно-
вычислительных систем (КИБЭВС)
РЕКУРСИЯ. ТИПЫ РЕКУРСИЙ Отчет по лабораторной работе №3
по дисциплине «Языки программирования»
Студент гр. 712-2
___________ Л.С. Болтушкин
__________
Руководитель Младший научный
сотрудник кафедры КИБЭВС
_______ __________ А.В. Куртукова
__________
Томск 2024

Введение
Целью данной лабораторной работы является изучение различных типов
рекурсий и способов их применения для решения практических задач.
Задание:
1.Изучить краткие теоретические сведения.
2.Разработать программу или комплекс программ, реализующих все типы рекурсий на одном из языков программирования (Python).
3.Реализовать индивидуальное задание, вариант обучающегося – 4: Для заданного одномерного массива X из N элементов найти количество элементов
массива, для которых выполняется условие sinXi2 < 0 . Рекурсивную функцию применять каждый раз отдельно для каждой из половин массива. Рекурсивные вызовы заканчивать, когда останется только один элемент.
2

1 Ход работы
1.1Типы рекурсий
Всамом начале была реализована линейная рекурсия (рисунок 1.1.1).
Рисунок 1.1.1 – Линейная рекурсия
Ниже представлен результат работы программы линейной рекурсии
(рисунок 1.1.2).
Рисунок 1.1.2 – Результат работы программы
Написанный код программы представлен в приложение А.
Далее была осуществлена повторная рекурсия (рисунок 1.1.3).
Рисунок 1.1.3 – Повторная рекурсия
3

Ниже представлены результаты повторной рекурсии (рисунок 1.1.4).
Рисунок 1.1.4 – Результат работы программы
Написанный код программы представлен в приложение Б.
Далее идет взаимная рекурсия (рисунок 1.1.5).
Рисунок 1.1.5 – Взаимная рекурсия
На рисунке 1.1.6 представлен результат работы программы.
Рисунок 1.1.6 – Результат работы программы
Написанный код программы представлен в приложение В.
4

В следующем задании была реализована каскадная рекурсия (рисунок
1.1.7).
Рисунок 1.1.7 – Каскадная рекурсия
Ниже представлены результаты работы каскадной рекурсии (рисунок
1.1.8).
Рисунок 1.1.8 – Результат работы программы
Написанный код программы представлен в приложение Г.
И в завершении общих заданий можно увидеть реализацию удаленной рекурсии (рисунок 1.1.9).
5

Рисунок 1.1.9 – Удаленная рекурсия
Ниже представлены результаты работы программы для реализации удаленной рекурсии (рисунок 1.1.10).
Рисунок 1.1.10 – Результат работы программы
Написанный код программы представлен в приложение Д.
1.2Индивидуальное задание
Вданном разделе необходимо выполнить индивидуальное задание по вариантам, в данном случае – вариант 4 (рисунок 1.2.1).
Рисунок 1.2.1 – Индивидуальное задание
6

Код программы представлен на рисунке 1.2.2.
Рисунок 1.2.2 – Реализация индивидуального задания
Ниже представлен результат работы программы (рисунок 1.2.3).
Рисунок 1.2.3 – Результат работы программы
Написанный код программы представлен в приложение Е.
7
Заключение
Врезультате выполнения лабораторной работы были получены знания
оразличных типах рекурсий, а также получены навыки для решения практических задач с применением рекурсий.
8
Приложение А
(обязательное)
# 1 - Линейная рекурсия def linear_recursion(n):
if n < 10: return n
else:
return n % 10 + linear_recursion(n // 10)
print("Линейная рекурсия:") n = int(input("Номер: ")) print(linear_recursion(n)) print("\n")
9
Приложение Б
(обязательное)
#2 - Повторная рекурсия
def repeated_recursion(a, b, k): if a >= b:
return repeated_recursion(a - b, b, k + 1) else:
return k
print("Повторная рекурсия:")
a= int(input("Номер 1: "))
b= int(input("Номер 2: "))
k = repeated_recursion(a, b, 0) print(k)
print("\n")
10