ВУЗ:
Составители:
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.
Следовательно, далее можно использовать обращение к подпрограмме, так как
известны ее формальные параметры.
Страницы
- « первая
- ‹ предыдущая
- …
- 3
- 4
- 5
- 6
- 7
- …
- следующая ›
- последняя »