Рекурсия – Опережающие объявления

В Турбо Паскале существует правило: перед употреблением любой элемент программы должен быть объявлен. Если строго следовать этому правилу, то реализовать косвенную рекурсию в Турбо Паскале невозможно. Для того чтобы это все же можно было сделать, в язык введены так называемые опережающие объявления (описания). Для задания опережающих объявлений используется директива компилятора Forward, которая позволяет объявить имя подпрограммы, отложив при этом ее окончательное определение, т.е. объявление проводится в два этапа. На первом задаются имя подпрограммы и параметры, за которыми следует атрибут Forward. Позднее появляется полное определение подпрограммы, но в ее заголовок не включается список параметров. Ниже приведен фрагмент программы, являющийся примером задания косвенной рекурсии.

Пример. Процедура First вызывает процедуру Second, а та, в свою очередь, процедуру First.

Procedure First(A, В: Integer); Forward;     {Заголовок первой процедуры}
Procedure Second(C: Real);                         {Вторая процедура}
Var X, Y: Integer;
begin

First(X, Y);

end;
Procedure First;   {Снова краткий вызов первой процедуры}
Var Z: Real;
begin
Second(Z);
end;

Директиву Forward можно использовать не только в рекурсивных подпрограммах, но и для более удобного размещения подпрограмм: сначала описать все заголовки, а затем – сами подпрограммы. Эту директиву не следует использовать в модулях для подпрограмм, объявленных в интерфейсе модуля

Один отзыв на «Рекурсия – Опережающие объявления»

  1. Sij:

    опишите лучше как использовать рекурсию в более современных языках программирования, Паскаль уже отстал.

Ваш отзыв

Повторите код: