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

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


Существуют 3 формы рекурсивных процедур:

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

procedure rec;

begin

s:=..;

if <условие> then rec;

end;

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

procedure rec;

begin

if <условие> then rec;

s:=..;

end;

3. форма с выполнением действий как до, так и после рекурсивного вызова (выполнение действий, как в рекурсивном спуске, так и в рекурсивном возврате).

Пример 1.

procedure rec;

begin

fl;

if <условие> then rec;

end;

Пример 2.

procedure rec;

begin

if <условие> then

begin

fl;

rec;

f2;

end;

end;

Задача 8.8. Составить процедуру вывода на печать символов строки в обратном направлении.

Листинг программы

Uses crt;

Procedure r;

Var

с: char;

Begin

If not eoln then

Begin

Read(c);

R;

Write(c);

End;

End;

Begin

Clrscr;

R;

End.

Задача 8.9 о перевёртывании строки. Составить программу, которая позволяет вводить любой текст, и слово "end" будет прекращать работу программы.

Uses crt;

Type

st = string[20];

Var

s, s1: st;

Function r (s_t:st): st;

Var

fl: char;

f2:st;

begin

if length (s_t) = 1 then r:= s_t;

else

begin

fl:= s_t[l];

delete (s_t, 1, 1);

f2:=r(s_t);

r:= concat (f2,fl);

end;

end;

begin

clrscr;

repeat

writeln ('введите любой текст');

writeln ('слово "end" прекратит программу');

readln (s);

s1:= г (s);

writeln (s1, ' есть перевёрнутая ', s);

until s = 'end';

end.



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: