Cтраница 2
Очевидно, что рекурсивные алгоритмы особенно уместны в тех случаях, когда речь идет об обработке данных с рекурсивно определенной структурой. Это еще раз подтверждается на примере процедуры, печатающей полученное дерево. Пустое дерево не печатается, у поддерева уровня L для каждой вершины вначале печатается ее левое поддерево, затем сама вершина, выделенная отступом в L пробелов, и наконец, печатается ее правое поддерево. [16]
![]() |
Узел двоичного дерева ( а и двоичное дерево ( б. [17] |
Более того, рекурсивный алгоритм поиска в применении к двоичным деревьям предоставляет элегантный метод вставки и поиска данных. Возможность приложения рекурсии к двоичному дереву вытекает из того факта, что определение структуры данных дерева по существу рекурсивно. [18]
![]() |
Время выполнения программы по вычислению чисел Фибоначчи. [19] |
Программа Fibol использует этот рекурсивный алгоритм для вычисления чисел Фибоначчи. Начните с небольших значений, пока не оцените, насколько быстро вашкомпью-тер может выполнять эти операции. [20]
Такое рекуррентное отношение предполагает рекурсивный алгоритм вычисления n - го факториального числа. [21]
При наличии этой структурм рекурсивный алгоритм поиска ключа в BST - дсрСпе становится ОЧСРКЛ-ным: если дерево пусто, ичсст место прочая при поиске; если ключ поиска рдиек ключу н корне, имеет место ТТОПЕШЙНРС при поиске. В противном случае вы по / шлется поиск ( рекурсивно) н соответствующем поддереве. Фуккпнн starchR ti программе 12 8 непосредственно реализует этот алгоритм. Мы вызываем рекурсивную подпрограмму, которая принимает дерево в качестве первою аргумента и ключ н качестве второго начиная L орня лсревд и искомого ключа. [22]
При наличии этой структуры рекурсивный алгоритм поиска ключа в BST-дереве становится очевидным: если дерево пусто, имеет место промах при поиске; если ключ поиска равен ключу в корне, имеет место попадание при поиске. В противном случае выполняется поиск ( рекурсивно) в соответствующем поддереве. Функция searchR в программе 12.8 непосредственно реализует этот алгоритм. Мы вызываем рекурсивную подпрограмму, которая принимает дерево в качестве первого аргумента и ключ в качестве второго, начиная с корня дерева и искомого ключа. На каждом шаге гарантируется, что никакие части дерева, кроме текущего поддерева, не могут содержать элементы с искомым ключом. [24]
Как и для всех рекурсивных алгоритмов результаты при больших п могут сильно зависеть от конкретных данных. [25]
Имеется вероятностная альтернатива детерминированному рекурсивному алгоритму. Мы можем поочередно размещать ферзей на доске случайным образом на очередной свободной горизонтали доски. Отличие алгоритма Лас Вегаса от стандартного рекурсивного алгоритма состоит в том, что при невозможности разместить очередного ферзя алгоритм попросту сдается и сообщает о неудаче. Рекурсивный же алгоритм пытается добиться положительного результата. [26]
Последовательность слияний, выполняемая рекурсивным алгоритмом, определяется деревом типа разделяй и властвуй, показанным на рис. 8.3: мы просто проходим по дереву в обратном порядке. Как было показано в главе 3, можно разработать нерекурсивный алгоритм, использующий явно определяемый стек, который даст ту же последовательность слияний. [27]
На практике часто можно разработать рекурсивные алгоритмы, разбивающие задачи произвольного размера на с равных частей, где с велико, насколько возможно. [28]
По выписанному соотношению несложно написать рекурсивный алгоритм, однако он будет страдать теми же недостатками - многократным вычислением одних и тех же величин, - что и рекурсивный алгоритм вычисления чисел Фибоначчи. [29]
Для настройки весовых коэффициентов используется рекурсивный алгоритм, который сначала применяется к выходным нейронам сети, а затем проходит сеть в обратном направлении до первого слоя. [30]