Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
13
Добавлен:
25.04.2015
Размер:
52.22 Кб
Скачать

Рекурсия

Рекурсия – это такой способ организации вычислительного процесса, при котором подпрограмма в ходе выполнения составляющих ее операторов обращается сама к себе.

При выполнении правильно организованной рекурсивной подпрограммы осуществляется многократный переход от некоторого текущего уровня организации алгоритма к нижнему уровню последовательно, до тех пор, пока, наконец, не будет получено тривиальное решение поставленной задачи. ( При N=0решение тривиально и используется для остановки рекурсии).

PROGRAM OFACT;

{$$+} {}

VAR n: INTEGER;

FUNCTION FACT(n: INTEGER): REAL;

{}

begin{ FACT}

IF n<0 THEN WRITELN (‘n’)

ELSE IF n=0 THEN FACT:= 1

ELSE FACT:= n* FACT(n-1);

end{FACT};

{ _ _ _ _}

BEGIN {main}

REPEAT

READLN (n);

WRITELN(‘n!=’, FACT(n));

UNTIL EOF;

END.

Рекурсивный вызов может быть косвенным. В этом случае подпрограмма обращается к себе опосредованно, путем вызова другой подпрограммы, в которой содержится обращение к первой.

1осн.[161-181]

5Доп. [16-19], 10доп.[104-116], 11доп.[187-211], 12доп.[121-134]

Контрольные вопросы

1. Могут ли имена формальных и фактических параметров подпрограмм совпадать между собой?

  1. Будет ли видима глобальная переменная внутри подпрограммы, если в этой подпрограмме имеется локальная переменная с таким же именем?

  2. Возможна ли передача управления внутрь процедуры (функции) посредством оператора перехода goto и почему?

  3. В чем состоит отличие описания процедуры и функции?

  4. Что такое область действия идентификаторов?

  5. Какие параметры называются формальными и какие - фактическими?

  6. Каковы правила передачи параметров-значений и параметров-переменных?

  7. Что необходимо для реализации рекурсии в программе?

Соседние файлы в папке лекции паскаль