Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Болтушкин Л.С., группа 712-2, лабораторная 3.docx

.pdf
Скачиваний:
5
Добавлен:
04.10.2024
Размер:
706.31 Кб
Скачать

Министерство науки и высшего образования Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования

ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОННИКИ (ТУСУР)

Кафедра комплексной информационной безопасности электронно-

вычислительных систем (КИБЭВС)

РЕКУРСИЯ. ТИПЫ РЕКУРСИЙ Отчет по лабораторной работе №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