На этом шаге мы рассмотрим взаимную рекурсию.
Косвенной или взаимной рекурсией называется организация вызовов нескольких процедур и функций по кругу (первая процедура вызывает вторую, вторая - третью, ..., n-я процедура вызывает первую).
Для реализации косвенной рекурсии при описании процедур и функций используется директива forward:
program Recurs; procedure Rec1 (i : Byte); forward; procedure Rec2 (i : Byte); begin Writeln ('рекурсия.'); Rec1(i) end; procedure Rec1; begin if i > 0 then begin Write ('Взаимная '); Rec2 (i-1) end end; begin Reс1 (5) end.
Результат:
Взаимная рекурсия. Взаимная рекурсия. Взаимная рекурсия. Взаимная рекурсия. Взаимная рекурсия.
Со следующего шага мы начнем разбирать модули.