Лекция: Виды рекурсивных процедур

 

В общем случае рекурсивная процедура Recur включает в себя некоторое множество операторов Ор и один или несколько рекурсивных вызовов Recur.

1. Действия выполняются на рекурсивном спуске (до рекурсивного вызова):

Procedure Recur;

Begin Op;

If условие

then Recur [else recur];

End;

2. Действия выполняются на рекурсивном возврате(после рекурсивного вызова):

Procedure Recur;

Begin

If условие

then Recur [else recur ];

Op;

End;

3. Действия выполняются как на рекурсивном спуске, так и на рекурсивном возврате:

A) procedure Recur; б) procedure Recur ;

Begin begin

Op1; if условие

If условие then Recur; then begin

Op2; Op1; Recur; Op2

End. end;

end:

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

П р и м е р ы рекурсивных подпрограмм.

1. Описать рекурсивную функцию digit без параметров, которая подсчитывает количество цифр в тексте, заданном во входном файле (за текстом следует точка).

Program rec_4;

var k: integer;

function digits: integer;

var c: char;

d: integer;

Begin

Read (c);

d := 0;

if c<> ' · '

then if (c<='9')and (c>='0')

then d:= 1 + digits

else d:= digits;

digits:= d;

End;

Begin

write('Введите текст, последний символ – точка ');

k:= digits;

Writeln (k);

End.

2. Напечатать в обратном порядке заданный во входном файле текст (за текстом следует точка ).

program rec_5;

еще рефераты
Еще работы по информатике