Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
В общем случае рекурсивная процедура 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;
Дата публикования: 2014-10-25; Прочитано: 565 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!