
- •Рекурсивные структуры в алгоритмах
- •Рекурсия — способ общего определения множества объектов или функций через себя, с использованием
- •В искусстве рекурсия выглядит примерно так :
- •Или как в народной песенке:
- •В программировании рекурсия — вызов функции (процедуры) из неё же самой, непосредственно (простая
- •Для функции Rec, где входной параметр целое число, функция проверяет, является ли число
- •Вообще нет определенного стандарта для графического показа рекурсии .
- •Рисунок 2 - Выполнение процедуры Rec с параметром 3 состоит из выполнения процедуры
- •Возможна чуть более сложная схема: функция A вызывает функцию B, а та в
- •Если обычную рекурсию можно уподобить уроборосу (рисунок 3), то образ сложной рекурсии можно
- •Рисунок 3 - Уроборос – змей, пожирающий свой хвост. Рисунок из алхимического трактата
- •Рисунок 4 - Сложная рекурсия.
- •Теоретической базой для рекурсивных функций, вызывающих себя более одного раза, служит раздел дискретной
- •Выше данное определение является рекурсивным. Если коротко, то дерево это множество, состоящее из
- •Графически дерево можно изобразить и другими способами. Некоторые из них представлены ниже.
- •Во всех алгоритмах, связанных с древовидными структурами неизменно встречается одна и та же
- •Алгоритм обхода в обратном порядке:
- •Рассмотрим алгоритм рисования деревца, изображенного на рисунке 7. Если каждую линию считать узлом,
- •Ханойские башни
- •Независимо от Брамы данную головоломку в конце 19 века предложил французский математик Эдуард
- •Предположим, что существует решение для n-1 диска. Тогда для перекладывания n дисков надо
- •Фракталами называют геометрические фигуры, обладающие свойством самоподобия, то есть состоящие из частей, подобных
- •Он делится на три части, средняя часть изымается и вместо нее строится угол
- •Такая
- •Кривая Коха получается после бесконечного числа таких итераций. На практике построение можно прекратить,
- •Избавление от рекурсии
- •Преимущество рекурсивного определения объекта заключается в том, что такое конечное определение теоретически способно
- •Рекурсия

Предположим, что существует решение для n-1 диска. Тогда для перекладывания n дисков надо действовать следующим образом:
1)Перекладываем n-1 диск.
2)Перекладываем n-й диск на
оставшийся свободным штырь.
3) Перекладываем стопку из n-1 диска, полученную в пункте (1) поверх n-го
диска.
Поскольку для случая n = 1 алгоритм перекладывания очевиден, то по индукции с помощью выполнения действий (1) – (3) можем переложить произвольное количество дисков.

Фракталами называют геометрические фигуры, обладающие свойством самоподобия, то есть состоящие из частей, подобных всей фигуре.
Классическим примером является кривая Коха, построение которой показано на рисунке 9. Изначально берется отрезок прямой (рисунке 9а).
Рисунок 9 - Процесс построения кривой Коха

Он делится на три части, средняя часть изымается и вместо нее строится угол (рисунке 9б), стороны которого равны длине изъятого отрезка (то есть 1/3 от длины исходного отрезка ).
Рисунок 9 - Процесс построения кривой Коха

Такая
операция
повторяется с каждым из получившихс я 4-х отрезков
(рисунке 9в). Рисунок 9 - Процесс построения кривой Коха
И так далее (рисунке 9г).
Рисунок 9 - Процесс построения кривой Коха

Кривая Коха получается после бесконечного числа таких итераций. На практике построение можно прекратить, когда размер деталей окажется меньше разрешения экрана (рисунке 9д).
Рисунок 9 - Процесс построения кривой Коха

Избавление от рекурсии
Любой рекурсивный алгоритм может быть переписан без использования рекурсии. Заметим, что быстродействие алгоритмов при избавлении от рекурсии, как правило, повышается. Еще одной причиной чтобы избавиться от рекурсии является ограничение на объем хранимых программой локальных переменных и значений параметров одновременно выполняющихся процедур.
Так почему же люди продолжают пользоваться рекурсивными алгоритмами? Очевидно, потому что это проще и естественнее, чем соответствующие нерекурсивные решения.

Преимущество рекурсивного определения объекта заключается в том, что такое конечное определение теоретически способно описывать бесконечно большое число объектов. С помощью рекурсивной программы же возможно описать бесконечное вычисление, причём без явных повторений частей программы.

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