Рекурсия - 5 стр.

UptoLike

7
Например, нужно вычислить
j
m
j
n
i
i
xS
∑∑
==
=
11
Пусть функция Sum(n,x)
вычисляет
=
n
i
i
x
1
, тогда рекурсивное к ней обращение позволяет вычислить сум-
му : S := Sum (m, Sum (n,x));
Оба типа рекурсии могут присутствовать одновременно. Пример такого
сочетанияфункция Аккермана:
>>
=>
=+
=
.0,0если)),1,(,1(
,0,0если),1,1(
,0если,1
),(
nmnmAmA
nmmA
mn
nmA
Нерекурсивная реализация функции Аккермана потребует использования
матрицы для хранения промежуточных значений.
Рекурсияочень мощный инструмент решения многих задач, но приме-
нять её следует только тогда, когда природа самой решаемой задачи рекурсивна.
1.2 Косвенная рекурсия
Рекурсивный вызов может быть косвенным. В этом случае подпрограмма
обращается к себе опосредованно, путем вызова другой подпрограммы
, в кото-
рой содержится обращение к первой.
Согласно правилам языка Паскаль каждый идентификатор перед употреб-
лением должен быть описан. Поэтому в случае взаимного обращения подпро-
грамм друг к другу необходимо использовать опережающее описание.
Опережающее описание заключается в том, что объявляется только заго-
ловок подпрограммы, а ее тело заменяется зарезервированным словом
forward.
Следовательно, далее можно использовать обращение к подпрограмме, так как
известны ее формальные параметры.