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

Семестр 2 / Алгоритмизация Практика 12 язык С

.pdf
Скачиваний:
82
Добавлен:
07.05.2020
Размер:
274.73 Кб
Скачать

Алгоритмизация и программирование – семестр 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