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

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

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

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

Добавлен: 09.01.2024

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

Скачиваний: 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