Рекурсия
Категория реферата: Рефераты по информатике, программированию
Теги реферата: реферат на тему рынок, ответ 3
Добавил(а) на сайт: Кулатов.
Предыдущая страница реферата | 1 2 3 4 | Следующая страница реферата
Рефераты | Рефераты по информатике, программированию | РекурсияРекурсияКатегория реферата: Рефераты по информатике, программированию Теги реферата: реферат на тему рынок, ответ 3 Добавил(а) на сайт: Кулатов. Предыдущая страница реферата | 1 2 3 4 | Следующая страница реферата |
Рис. 16.4. Схема организации цикла вида while do
и его рекурсивного эквивалента.
Обратите внимание, что в правой части рис. 16.4 возможно зацикливание! Надо быть очень осторожным и всякий раз, применяя рекурсивную поцедуру или функцию, убедиться в их корректном завершении. Рассмотрим пример. На рисунке 16.5 приведен алгоритм Евклида, с которым мы познакомились на лекции 1, для вычисления НОД (наибольшего общего делителя) в форме обычной и рекурсивной функции на языке Pascal.
Function НОД (a, b : integer) : integer ;
begin repeat b then a:=a-belse b:=b-a untile a = b; НОД:=a end |
begin if a = b then НОД:=a; b then НОД:=НОД(a-b, b);else НОД:=НОД(b-a , a); end |
Рис. 16.5. Циклическая и рекурсивная функции
для вычисления НОД.
Как видно из приведенных примеров на рисунках 16.1 и 16.5, итерация, т.е. цикл всегда может быть заменен его рекурсивным аналогом по схеме, показанной на рисунке 16.4.
С обратным утверждением о замене рекурсии итерацией все сложнее. На рисунке 16.6 приведен пример рекурсивной функции, где по схеме (рис. 16.4) рекурсию итерацией заменить не удается.
в остальных случаях
Рис. 16.6. Рекурсивная функция Аккермана.
Способы повторного использования процедур и функций.
Итак, процесс абстракции в форме процедуры состоит из трех шагов:
Именование. Присвоить рутинному алгоритму уникальное имя, которое затем будем использовать как имя соответствующей процедуры.
Определить пред- и постусловия для создаваемой процедуры или функции в соответствии с контекстом их использования в основной программе.
Параметризиовать процедуру. (Везде далее, если явно не оговорено, говоря о процедурах, будем иметь в виду также и функции). Для этого часть предусловия и постусловия в спецификации оформить в виде параметров соответствующего типа, часть из которых будет доставлять исходные данные, а другая часть - результаты работы процедуры.