Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

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



В общем случае рекурсивная процедура 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...