Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
29_Ae1.doc
Скачиваний:
6
Добавлен:
01.03.2025
Размер:
302.08 Кб
Скачать

32. Рекурсии в процедурах и функциях.

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

Рассмотрим классический пример - вычисление факториала (пример 18). Программа вводит с клавиатуры целое число N и выводит на экран значение N!, которое вычисляется с помощью рекурсивной функции РАС. Для выхода из программы необходимо либо ввести достаточно большое целое число, чтобы вызвать переполнение при умножении чисел с плавающей запятой, либо нажать Ctrl-Z и Enter.

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

Пример 8.5

Program Factorial;

{$S+} {Включаем контроль переполнения стека} 

var

n: Integer;

Function Facfn: Integer): Real; 

{Рекурсивная функция, вычисляющая n ! } 

begin {Fac}

 if n < 0 then

WriteLn ('Ошибка в задании N') 

else

if n = 0 then

Fac := 1

else Fac := n * Fac(n-l) 

end {Fac} ;

{---------------}

begin {main} repeat

 

ReadLn (n) ; 

WriteLn ('n!= ',Fac(n)) 

until EOF 

end {main} .

33. Структурное представление основных конструкций языка.

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

Узел слияния - 2 входа 1 выход, операции над данными не осуществляются

Простой предикат – вычисляет логическое выражение и в соответствии с получившимся результатом определяет направление. Вычисление без побочных эффектов. Функция - преобразование входных данных.

Программа называется простой, если ее схема имеет один вход один выход, и через каждый вход идет путь от входа к выходу.

Программа называется элементарной, если она простая и нельзя выделить фрагмента более чем из одного узла (отличного от самой программы), который тоже является простой программой.

Существует 15 элементарных программ (не более 4 узлов). 7 из них имеют функциональные узлы:

Функция:

Следование:

Если-то-иначе:

Если-то:

Цикл с предусловием:

 

Цикл с постусловием:

Цикл с внутренним условием:

С помощью указанных управляющих конструкций можно добиться сколь угодно высокой сложности.

Обычно операторы программы выполняются друг за другом в той последовательности, в которой они написаны. Это называется последовательным выполнением. Однако некоторые операторы позволяют программисту указать, что следующим должен выполнятся не очередной оператор, а какой-то другой. Это называется передачей управления.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]