Файл: Отчет По предмету Алгоритмы и структуры данных.docx

ВУЗ: Не указан

Категория: Отчет по практике

Дисциплина: Не указана

Добавлен: 09.01.2024

Просмотров: 28

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ

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

«Санкт-Петербургский государственный университет телекоммуникаций

им. проф. М. А. Бонч-Бруевича»

(СПбГУТ)
Факультет Информационных систем и технологий
Кафедра Безопасности информационных систем

Отчет
По предмету «Алгоритмы и структуры данных»
о практической работе №2:
«Понятие рекурсии. Рекурсивные функции»
Выполнил студент гр. ИСТ-022:

Волков Кирилл

// //
оценка    
   

Проверил: Бородянский Ю.М.

// //

Подпись

Задача работы

Изучить понятия рекурсии, рекурсивные функции в программировании, научиться применять рекурсивные методы в решении задач на языке С++, разработать программу по вычислению суммы кубов цифр числа и доказать, что, независимо от входного числа, результат работы программы сводится к числу 153. Приобрести навыки и умения анализа алгоритма и всего кода разработанной программы в Big-O-нотации.

Ход работы

Суть разработанного алгоритма: на входе даётся число, далее проверяется условие кратности трём, затем в случае «true», вызывается рекурсивная функция с вычислением суммы кубов цифр полученного числа, до тех пор, пока число не будет равно 153.

Блок-схема

Рассчет сложности Big-O



Ответ: общая сумма сложности двух функций O(1) + O(n^2) = O(n^2)

Рекурсивная триада:

Параметр: число( numb )

База рекурсии: 1305

Декомпозиция: два цикла while

Результат работы программы




Время работы с рекурсией

Время работы линейного алгоритма

Вывод

В результате работы была разработана программа, которая вычисляет сумму цифр куба числа, а затем повторяет вычисление с полученной суммой, и доказывает, что любое число при таком алгоритме сводится к 153.

На практике были применены знания о рекурсивных функциях.

В результате вычислений разных чисел, не была выявлено конкретной зависимости количества итераций от числа. В большинстве случаев – чем больше число, тем больше итераций.

Была проведена работа по анализу программного кода и была вычислена сложность в нотации Big-O.

Код программы смотрите в приложении 1
Приложение 1

#include

#include

#include

using namespace std;

int count_ = 0;

int f_recurs(int numb){

int cube=0;

count_ += 1;

cout<<"\nИтерация №"<
while (numb != 0){

cube += (numb%10) * (numb%10) * (numb%10);

numb = numb / 10;

}

cout<<"\nСумма кубов цифр числа = "<
numb = cube;

if ( numb != 153)

f_recurs(numb);

return 0;

}

int main()

{

SetConsoleOutputCP(1251);

SetConsoleCP(1251);

int numb;

cout<<"Введите натуральное число :";

cin>>numb;

if(numb%3==0)

{

f_recurs(numb);

}

else

cout<<"Число не кратно трём";

return 0;

}





г. Санкт-Петербург

2021