Алгоритмизация и программирование – семестр 2
Практическое занятие № 12 « Рекурсия»
Рекурси́ вная фу́нкция— это числовая функция f(n) числового аргумента, которая в
своей записи содержит сама себя. Такая запись позволяет вычислять значения f(n) по значениям f(n-1), f(n-2),…, подобно рассуждению по индукции. Чтобы вычисление завершалось для любого n, необходимо, чтобы для некоторых n функция была определена нерекурсивно
(например, для n=0 или n=1).
Рекуррентная формула — формула вида:
an = f(n, an-1, an-2, ..., an-p),
выражающая каждый член последовательности an через p предыдущих членов и
(возможно) номер члена последовательности n.
Пример: функция факториала натурального числа удовлетворяет рекуррентной формуле:
Задания:
1. (0.5 балла). Для вычисления функции f(n)= an есть рекуррентная формула: an = a * a(n-1), a0 = 1.
Написать рекурсивную программу для вычисления степени числа (число - тип двойной точности с плавающей запятой, степень - тип длинного целого со знаком).
Бонус: (1 балл) использовать оптимизированную рекурсию для вычисления степени числа (подсчитать и напечатать число шагов рекурсии для степени N=10, 100, 1000).
Для оптимизации можно использовать правило: при возведении степени в степень
показатели перемножаются, а основание остаётся без изменений:
(an)m=an m
2. (0.5 балла). Последовательность чисел Фибоначчи: если нулевой элемент последовательности равен 0, первый – 1, а каждый последующий равен сумме двух предыдущих, то это последовательность чисел Фибоначчи (0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ... ).
Напишите программу, позволяющую вычислить N-е число Фибоначчи, используя
рекуррентную функцию (N вводится с клавиатуры):
long long int fibonachi(int N)
Представьте в отчете расчеты для: 20, 30 и 40-е числа Фибоначчи. Сделайте выводы об эффективности работы программы с рекурсией.
3. (1 балл). Написать рекурсивную программу для поиска максимального значения в одномерном массиве N целых случайных чисел. Вычислить число шагов рекурсии при N=10, 100, 1000. Найти максимальное значение N, при котором программа работает корректно.
В отчете привести результаты работы программ в понятной и удобочитаемой форме. Выполняется в течении 1 занятия:
Максимальная оценка – 2 балла(3 сБонусом).
Практическоезанятие№12 |
Страница1 |