Рекурсия

Содержание

Слайд 2

Рекурсия в широком смысле – это определение объекта посредством ссылки на

Рекурсия в широком смысле – это определение объекта посредством ссылки на себя. 
Рекурсия в программировании –

это пошаговое разбиение задачи на подзадачи, подобные исходной.
Рекурсивный алгоритм – это алгоритм, в определении которого содержится прямой или косвенный вызов этого же алгоритма.
Слайд 3

Функция называется рекурсивной, если в своем теле она содержит обращение к

Функция называется рекурсивной, если в своем теле она содержит обращение к самой себе

с измененным набором параметров
Слайд 4

Пример 1. В арифметической прогрессии найдите an, если известны а1 =

Пример 1. В арифметической прогрессии найдите an, если известны а1 = -2.5, d =0.4, не используя

формулу n -го члена прогрессии.
По определению арифметической прогрессии, an=an-1+d, при этом
an-1=an-2+d, an-2=an-3+d,... a2=a1+d.
Слайд 5

static double Arifm(int n, double a, double d) { if (n

static double Arifm(int n, double a, double d)
{
if

(n < 1) return 0; // для неположительных номеров
else if (n == 1) return a; //базовый случай n=1
return Arifm(n - 1, a, d) + d; //общий случай
}
Слайд 6

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

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

себя же, но с меняющимися значениями отдельных параметров
Слайд 7

рекурсия прямая косвенная предусматривает непосредственное обращение рекурсивной функции к себе, но

рекурсия

прямая

косвенная

предусматривает непосредственное обращение рекурсивной функции к себе, но с иным набором входных

данных

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

Слайд 8

Рекурсивная триада: параметризация – выделяют параметры, которые используются для описания условия

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

параметризация – выделяют параметры, которые используются для описания условия задачи, а

затем в решении;
база рекурсии – определяют тривиальный случай, при котором решение очевидно, то есть не требуется обращение функции к себе;
декомпозиция – выражают общий случай через более простые подзадачи с измененными параметрами.
Слайд 9

рекурсивный стек - это область памяти, предназначенная для хранения всех промежуточных

рекурсивный стек - это область памяти, предназначенная для хранения всех промежуточных

значений локальных переменных при каждом следующем рекурсивном обращении.
Слайд 10

Домашнее задание. Задача о Ханойских башнях

Домашнее задание.
Задача о Ханойских башнях