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

ЯП лаба 3

.docx
Скачиваний:
6
Добавлен:
03.11.2023
Размер:
55.99 Кб
Скачать

Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ» (ТУСУР)

Кафедра комплексной информационной безопасности электронно-вычислительных систем (КИБЭВС)

Рекурсия

Отчет по лабораторной работе №3 по дисциплине «Языки программирования»

Студент гр. ***-*

________.2023

Принял

Кандидат Технических наук, Доцент каф. КИБЭВС

__________

________ А.С. Романов

________.2023

2023

Введение

Цель работы: изучение типов рекурсий, способов их применения для решения практических задач.

Задание:

1. Изучить краткие теоретические сведения.

2. Разработать программу или комплекс программ, реализующих все типы рекурсий на одном из языков программирования (Python).

3. Реализовать индивидуальное задание, соответствующее своему варианту (Вариант 13).

4. Написать отчет и защитить у преподавателя.

1 Описание задания

Нужно реализовать 5 типов рекурсии:

  1. Линейная;

  2. Повторная;

  3. Взаимная;

  4. Каскадная;

  5. Удаленная.

Вариант 13: Для заданного одномерного массива A из N элементов проверить, что существует по крайней мере один элемент Ai, для которого выполняется условие Ai ≤ i2 . Рекурсивную функцию применять каждый раз отдельно для каждой из половин массива. Рекурсивные вызовы заканчивать, когда останется только один элемент.

2 Разработка программ

На рисунке 2.1 представлен вывод программы для всех видов рекурсии, где первое строка - поиск суммы цифр числа 12, вторая строка – количество делений нацело числа 12 на 2, третья строка – определение чётности числа 12, четвёртая строка – , пятая строка – удалённая рекурсия.

Рисунок 2.1 – Вывод программы для рекурсивных функций

На рисунке 2.2 представлен вывод программы для индивидуального задания.

Рисунок 2.2 – Вывод программы для индивидуального задания

Приложение А

(Обязательное)

Листинг кода Рекурсии

def pov(a, b, k1): if a >= b: return pov(a - b, b, k1 + 1) else: return k1 def vzaim1(b2): if b2 == 0: return True else: return vzaim2(b2 - 1) def vzaim2(b2): if b2 == 0: return False else: return vzaim1(b2 - 1) def kask(n, m): if (m == 0 and n > 0) or (m == n and n > 0): return 1 else: if m > n and n >= 0: return 0 else: return kask(n - 1, m - 1) + kask(n - 1, m) def delete(n, m): if n == 0: return m + 1 if m == 0: return delete(n - 1, 1) if m != 0 and n != 0: return delete(n - 1, delete(n, m - 1)) return 0 z1 = 12 z2 = 2 print(lin(z1)) print(pov(z1, z2, 0)) if vzaim1(z1) is True: print("Чётное") else: print("Нечётное") print(kask(z1, z2)) print(delete(3, 1))

Приложение Б

(Обязательное)

Листинг кода индивидуального задания

def elementExit(array, start, end): if end < start: return False if array[end] <= end * end: print("Элемент ai<=i*i:", array[end]) return True else: return elementExit(array, start, end - 1) print("Введите размер массива") L = int(input()) mas = [] print("Введите числа массива") for i in range(L): a = int(input()) mas.append(a) temp1: bool temp2: bool temp1 = elementExit(mas, 0, (L // 2) - 1) temp2 = elementExit(mas, L // 2, L - 1) if temp1 is False and temp2 is False: print("Элемент ai <= i*i в данном массиве не существует!\n")

Соседние файлы в предмете Языки программирования