ВУЗ:
Составители:
Рубрика:
22
В рекурсивном алгоритме должно присутствовать условие выхода из ре-
курсии. В противном случае рекурсивный алгоритм может вызывать себя «бес-
конечное» число раз . Ждать результатов работы программы придется долго.
В действительности, бесконечного самовызова не получится , так как ре-
сурсы оперативной памяти ограничены .
Вызов рекурсивной процедуры или функции должен выполняться по усло -
вию, которое на каком-то уровне рекурсии станет ложным!
Если условие истинно, то осуществляется рекурсивный спуск. Как
только условие стало ложным, начинается рекурсивный возврат.
Рассмотрим три разных формы рекурсивной процедуры / функции.
1. Процедура с выполнением действий на рекурсивном спуске:
Procedure Рекурсия;
begin
Действия;
if Условие then Рекурсия
end;
2. Процедура с выполнением действий на рекурсивном возврате:
Procedure Рекурсия;
begin
if Условие then Рекурсия;
Действия;
end;
3. Процедура с выполнением действий на рекурсивном спуске и возврате:
Procedure Рекурсия;
begin
Действия;
if Условие then Рекурсия;
Действия;
end;
Рассмотрим задачу, в которой действия выполняются на рекурсивном
спуске и возврате.
Задача 1. Пусть дана строка текста. Напечатайте ее в обратном порядке.
♣ Рекурсивная процедура Rec читает символы строки на рекурсивном
спуске и печатает считанные символы на рекурсивном возврате. Локальная пе-
ременная c:char хранит считанный на очередном уровне рекурсии символ. Ус-
ловием выхода из рекурсии служит значение функции eoln (конец строки). При
нажатии клавиши Enter начинается рекурсивный возврат и считанные символы
печатаются в обратном порядке. ♠
Program Text;
Uses crt;
Procedure Rec;
var c:char;
begin
if not eoln
Страницы
- « первая
- ‹ предыдущая
- …
- 20
- 21
- 22
- 23
- 24
- …
- следующая ›
- последняя »