Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
vidpovidi_TA_modul.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
252.32 Кб
Скачать

24. Навести опис, рекурсивно-визначені процедури і функції.

Описання процедури А, в розділі операторів якої використовується оператор цієї процедури, називається рекурсивним. Таким чином, рекурсивне описання має вид

Procedure A(u, v : ParType);

...

Begin

...; A(x, y); ...

End;

Аналогічно, описання функції F, в розділі операторів якої використовується виклик функції F, називається рекурсивним. Рекурсивне описання функції має вид

Function F(u, v : ArgType) : FunType;

...

Begin

...; z := g(F(x, y)); ...

End;

Використання рекурсивного описання процедури (функції) приводить до рекурсивного виконання цієї процедури (обчислення цієї функції). Задачі, що формулюються природним чином як рекурсивні, часто приводять до рекурсивних розв’язків.

Рекурсією називається така ситуація, коли підпрограма (процедура або функція) викликає сама себе.

Типова конструкція рекурсивної процедури повинна мати наступний вигляд:

Procedure Rec (t:integer);

Begin

<Дії на початку рекурсії>

If <Перевірка умови> Then Rec(t+1);

<Дії на виході з рекурсії>

End;

25. Навести опис складної рекурсії.

Складна рекурсія – виклик декількох підпрограм в одній підпрограмі.

procedure Ei(m:integer; var E:real );

var k: integer;

w: real;

begin

fact(i, fac);

for k:=1 to m do

w:=w+(exp(-1*ln(k+1))/exp((2*k-1)*ln(19)));

E:=(exp(22*ln(2))*2*fac)*w/(exp(21*ln(pi)));

end;

26. Проаналізувати роботу циклу за допомогою рукерсії. Розглянемо рекурсивне визначення функції n!=1*2*...*n (n-факторіал). Нехай F(n) = n! Тоді

1.F(0) = 1

2.F(n) = n*F(n - 1) при n > 0

Засобами мови це визначення можна сформулювати як обчислення:

If n = 0

then F := 1

else F := F(n - 1) * n

Оформивши це обчислення як функцію і змінивши ім’я, отримаємо:

Function Fact(n: Integer): Integer;

Begin

If n = 0

then Fact := 1

else Fact := Fact(n - 1) * n

End;

Обчислення функції Fact можна представити як ланцюжок викликів нових копій цієї функції з передачею нових значень аргументу і повернень значень функції в попередню копію.

27. Навести визначення рекурентні співвідношення. Рекурсія і ітерація. Рекурентним співвідношенням називається формула виду an+1=F(an,an-1,...,an-k+1), де F деяка функція від k аргументів, яка дозволяє обчислювати наступні члени послідовності через значення попередніх членів. Якщо вказати перших k членів послідовності, то рекурентне співвідношення однозначно визначає послідовність an.

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

Функция называется рекурсивной, если во время ее обработки возникает ее повторный вызов, либо непосредственно, либо косвенно, путем цепочки вызовов других функций. Итерацией называется такой способ организации обработки данных, при котором некоторые действия многократно повторяются, не приводя при этом к рекурсивным вызовам программ (функций).

Теорема. Произвольный алгоритм, реализованный в рекурсивной форме, может быть переписан в итерационной форме и наоборот.

Далее рассмотрим набор элементарных функций, реализованных как при помощи операторов цикла, так и при помощи рекурсивного подхода. Перед написанием рекурсивных функций на любом языке программирования, как правило, необходимо записать рекуррентное соотношение, определяющее метод вычисления функций. Рекуррентное соотношение должно содержать как минимум два условия:

I) условие продолжения рекурсии (шаг рекурсии);

II) условие окончания рекурсии.

Рекурсию будем реализовывать посредством вызова функции самой себя. При этом в теле функции сначала следует проверять условие продолжения рекурсии. Если оно истинно, то выходим из функции. Иначе совершаем рекурсивный шаг.

Итеративный вариант функций нужно реализовывать при помощи оператора цикла for.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]