Лекция: Комбинация прямой и обратной рекурсии
Третью форму рекурсивных подпрограмм покажем на примере следующей задачи.
Задача. Вывести на печать символы введенной строки 'HELLO' в обратном направлении.
Решение этой задачи выполнено в виде показанной ниже программы Reverse_String,использующей рекурсивную процедуру Reverse. Напомним, что функция EoLn возвращает значение, равноеFalse, если строка еще не окончилась, и значение, равное True, когда считывается последний символ строки.
Program Reverse_String;
Procedure Reverse;
Var
Ch: Char;
Begin
If not EoLn then
Begin
Read (Ch) ;
Reverse;
Write (Ch);
End
End;
Begin
Reverse
End.
Если после запуска программы на выполнение в качестве входной строки ввести слово 'HELLO', то соответствующая такой исходной строке таблица трассировки по уровням рекурсии будет иметь следующий вид:
Рис.3. Трассировка значений параметров