Upgrade to Pro — share decks privately, control downloads, hide ads and more …

САКОД – 2 курс весна 2021 – 3.1 занятие

САКОД – 2 курс весна 2021 – 3.1 занятие

ТиМПИ

March 09, 2021
Tweet

More Decks by ТиМПИ

Other Decks in Programming

Transcript

  1. Итеративные алгоритмы (1/2) 2/12 Под итерацией в общем случае понимают

    такой способ организации обработки данных, при котором многократно повторяется некоторая последовательность действий. Алгоритм, основу которого составляет итерация, называется итерационным (итеративным).
  2. Итеративные алгоритмы (2/2) 3/1 Подсчёт факториала int num = 0,

    fact = 1; cin>>num; for(int i = num; i>1; i--){ fact *= i; } cout<<fact; 3/12
  3. Рекурсивные алгоритмы (2/4) Обобщением понятия итерации является рекурсия, под которой

    понимают такой способ организации обработки данных, при котором алгоритм использует сам себя в качестве вспомогательного алгоритма. 5/12
  4. Рекурсивные алгоритмы (3/4) long double fact(int N) { if(N <

    0) return 0; if (N == 0) return 1; else return N * fact(N - 1);} void main() { int N; cin >> N; 6/12
  5. Рекурсивные алгоритмы (4/4) Общая методика анализа рекурсии содержит три этапа:

    1. Параметризация задачи, заключающаяся в выделении различных элементов, от которых зависит решение, в частности, размерности решаемой задачи. После каждого рекурсивного вызова размерность должна убывать. 2. Выделение базы или поиск тривиального случая и его решение. Как правило, это ключевой этап в рекурсии, размерность задачи при этом часто равна О или 1. 3. Декомпозиция общего случая, имеющая целью привести задачу к одной или нескольким задачам того же типа, но меньшей размерности. 7/12
  6. Задача Числа Фибоначчи имеют вид: 0,1,1,2,3,5,8,13….. Вывести первые N чисел

    Фибоначчи (N задаётся пользователем) используя рекурсию. 8/12
  7. Оценка рекурсии При оценке эффективности алгоритмов, содержащих рекурсию, вычисляют следующие

    характеристики: • глубину рекурсии — максимальное количество вызовов рекурсивного алгоритма без возвратов; • текущий уровень рекурсии — количество рекурсивных вызовов в некоторый момент времени; • общее количество вызовов — число вызовов рекурсивного алгоритма при работе программы. 9/12
  8. Задача Числа Фибоначчи имеют вид: 0,1,1,2,3,5,8,13….. Сравнить максимальное N (количество

    чисел Фибоначии) для рекурсии и итеративного алгоритма. Если упираетесь в размер стандартного типа данных (long long), то используйте арифметику, например библиотеку «Boost.Multiprecision». Также замерьте время работы программы при помощи библиотеки «Сhrono». 11/12