Выполнение действий как на рекурсивном спуске, так и на возврате

   
На этом шаге мы рассмотрим комбинацию прямой и обратной рекурсии.

   
Третью форму рекурсивных подпрограмм покажем на примере следующей задачи.

   
Задача. Вывести на печать символы введенной строки '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', то соответствующая такой исходной строке таблица трассировки по уровням рекурсии будет иметь следующий вид:


Рис.1. Трассировка значений параметров

   
На следующем шаге мы рассмотрим косвенную рекурсию.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий