Cтраница 3
Формула 2.5 В рекурсивной программе, которая разбивает ввод надвое, а затем производит постоянное количество других операций ( см. главу 5) возникает следующая рекурсия. [31]
![]() |
Построение иерархического списка. [32] |
На рис. 9.24 показана рекурсивная программа INDENT которая выдает иерархическую опись предметов. INDENT имеет два аргумента. Номер уровня помещают впереди названия этого узла. При выводе на экран этого сообщения между ним и краем строки располагается пустой промежуток, длина которого составляет Зх LEVEL позиций. Когда оно окажется выполненным, программа прекращает работу. В противоположном случае на строке 7 определяют составные части этого узла. [33]
Как будет показано, рекурсивную программу всегда можно преобразовать в нерекурсивную, которая выполняет такое же вычисление. [34]
Формула 2 4 и рекурсивной программе, которзч лолжна выполни ] Ь линейный проход по циол. [35]
Какие ошибки происходят при использовании рекурсивных программ. [36]
Программа 5.1 иллюстрирует базовые особенности рекурсивной программы: она вызывает саму себя ( с меньшими значениями аргументов) и содержит условие завершения, при выполнении которого непосредственно вычисляет свое результирующее значение. [37]
Следует сказать несколько предостерегающих слов относительно рекурсивных программ, подобных той, что мы написали здесь для генерации чисел Фибоначчи. Этот процесс быстро выходит из-под контроля. Вычисление только 20-го числа Фибоначчи потребовало бы порядка 220, или около миллиона вызовов; вычисление 30-го числа Фибоначчи требует порядка 230, или около миллиарда вызовов, и так далее. Ученые, работающие с компьютерами, называют эти задачи задачами с экспоненциальной сложностью. Эти задачи сложны даже для наиболее производительных компьютеров, имеющихся на настоящий момент. [38]
![]() |
Состав активного фильтра. [39] |
Поставлена и исследована задача перехода от рекурсивной программы к итеративному коду, что эквивалентно переходу к локально-организованной системе без взаимодействия в смысле гл. [40]
Мы увидим также, каким образом многие рекурсивные программы могут быть переписаны в нерекурсивном виде, используя предварительно определенные функции высшего порядка. [41]
Предложенный Тапгом метод объединяет в себе две рекурсивные программы. На первой фазе строится иерархия ( по сложности) более простых задач балансирования конвейера путем многократного объединения групп элементов, обозначающих элементарные операции, в единый объединенный элемент. На второй фазе решается упрощенная задача балансирования конвейера путем последовательного выделения рабочих для каждого узла получившегося дерева, начиная с вершины. Затем в качестве подзадачи для балансирования выбираются те элементы, к-рым выделено более одного рабочего. Такая процедура повторяется до тех пор, пока каждому рабочему месту пе будет соответствовать один рабочий. Когда объединенные элементы ( узлы дерева) требуют большего числа людей, чем это возможно, то такие элементы разбиваются на составляющие и перегруппировываются с соблюдением порядка выполнения операции. Процедура повторяется до тех пор, пока ограничение на максимальное число людей не будет удовлетворено. [42]
Предложенный Тангом метод объединяет в себе две рекурсивные программы. На первой фазе строится иерархия ( по сложности) более простых задач балансирования конвейера путем многократного объединения групп элементов, обозначающих элементарные операции, в единый объединенный элемент. На второй фазе решается упрощенная задача балансирования конвейера путем последовательного выделения рабочих для каждого узла получившегося дерева, начиная с вершины. Затем в качестве подзадачи для балансирования выбираются те элементы, к-рым выделено более одного рабочего. Такая процедура повторяется до тех пор, пока каждому рабочему месту не будет соответствовать один рабочий. Когда объединенные элементы ( узлы дерева) требуют большего числа людей, чем это возможно, то такие элементы разбиваются на составляющие и перегруппировываются с соблюдением порядка выполнения операции. Процедура повторяется до тех пор, пока ограничение па максимальное число людей не будет удовлетворено. [43]
Эти методы можно легко реализовать с помощью рекурсивной программы, как показано в программе 5.14, которая является непосредственным обобщением программы 5.5 обхода связного списка. [44]
Основная цель этой главы заключается ь исследовании рекурсивных программ и структур даниык кик практическим инструментов Вначале исследуется иэаимоси ь между математической рекурсией и простыми рекурсивными программами и ирино - ЕИГСЙ ряд примеров применения рекурсии, Затем рассмотри и дстсн фундаментальна ч рекурсивная схсмн, известная иол незнанием разделяй и № аст уй которая используется Л Ря решения задач общего характера в нескольких последующих разделах этой книги. После этого приводится обшнй подход к реализации рекурсивных программ. Са-зовие методы сблеэ с dzpttia fi № frav rJd / Л которые лежат в основе реку реи в них язро - рамм обработки деревьев. [45]