КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Рекурсивные алгоритмы
Рекурсия (от латинского «recurso» - бегу назад, возвращаюсь) в сомом общем виде – это есть правило определения (или построения) некоторого объекта с использованием его же самого. Рекурсивный алгоритм – это алгоритм, который в качестве выполняемых операций может использовать обращение к самому себе. Рекурсивные алгоритмы представляют собой особый интерес, поскольку зачастую являются более простым и изящным способом решения задачи, чем традиционные алгоритмы. Более детально мы займемся в следующей теме, здесь же рассмотрим несколько примеров.
Пример 7. Вычисление с помощью одного из следующих алгоритмов:
a) если n=0, то 1. иначе б) где = если x = y то z, иначе .
Оба алгоритма вычисляют одно и то же значение, в алгоритме а) значение функции определяется через ее же значение, вычисленное на предыдущем шаге; в алгоритме б) значение определяется с помощью рекурсивно заданной функции F. Проиллюстрируем работу алгоритма б) для n=4:
Приведем другие примеры рекурсивных алгоритмов. Пример 8. Функция «91». Следующий интересный алгоритм при заданном n вычисляет значение, равное 91 для всех и значение n-10 для остальных n. если n>100, то n-10, иначе Пример 9. Игра «Ханойская башня». Имеется 3 основания: A,B,C. На основании A лежат кольца одно га другом в порядке убывания размеров. Необходимо переместить кольца на основание B с использованием «промежуточного» основания C так, чтобы на основании B они тоже лежали в порядке убывания размеров. Единственными разрешенными перемещениями являются такие, при которых кольцо, взятое с вершины одной из пирамид, помещается на большее кольцо либо на пустое основание. Тем, кто впервые встречается с этой задачей, рекомендуется попробовать решить ее вручную для четырех колец. Рекурсивный алгоритм игры очень интересен. Обозначим его именем Ханой с параметрами: n – число колец, X – исходное основание, Y – конечное, Z – промежуточное (переменные X,Y,Z могут, например, принимать значения A,B,C). Условимся, что оператор ПЕРЕМЕСТИТЬ(X,Y) выполняет перемещение верхнего кольца с основания X на основание Y. Алгоритм состоит всего из четырех строк:
Ханой(n, X, Y, Z). Если n>0, то выполнять 1,2,3. 1. Ханой(n-1, X, Z, Y); 2. ПЕРЕМЕСТИТЬ(X,Y); 3. Ханой(n-1, Z, Y, X); Выход.
Здесь единственное реальное действие выполняется оператором ПЕРЕМЕСТИТЬ(X,Y). Число элементарных перемещений, выполняемых этим алгоритмом, составляет . Легенда, связанная с этой древней игрой, гласит, что конец света совпадает с концом перенесения 64-х колец. Соответствующее количество перемещений ; это потребует 10 миллионов лет на сверхбыстродействующей ЭВМ.
Рекомендации по составлению рекурсивных алгоритмов. Разработка рекурсивного алгоритма обычно состоит из 3-х основных этапов: а) параметризация. Выделяется одна или несколько переменных, по которым будет производиться рекурсия. Часто это размерность задачи, которая убывает после каждого рекурсивного вызова; б) поиск простейшего (тривиального) случая и его разрешение. Как правило, это решения задачи при размерности, равной 0 или 1 и т.п.; в) определение правила сведения задачи размерности n к задаче размерности n-1 с помощью рекурсии. Это правило обычно является основной частью приведенного алгоритма. Указанные рекомендации, конечно, не являются универсальными, но во многих случаях они помогают, как например, в заданиях на самостоятельную работу. Лекция 2. РЕКУРСИВНЫЕ ФУНКЦИИ
Рекурсивные функции представляют собой исторически первую формальную модель алгоритма. Они задают алгоритм как правило вычисления значения некоторой числовой функции. Ключевыми в данной теме являются понятия рекурсии и оператор примитивной рекурсии. Рекурсия в самом общем виде – это есть правило определения (или построения) некоторого объекта с использованием его же самого. Дадим некоторые важные определения. Числовые функции, значения которых можно вычислять посредством единого для данной функции алгоритма, называются вычислимыми функциями. Вычислимая функция – интуитивное понятие, поскольку при ее определении использован термин «алгоритм». Арифметическими называются функции, области определения и значений которых – натуральный ряд. Арифметические функции с ограниченной областью определения называются частными, остальные – всюду определенными. Для первоначального ознакомления с рекурсивными функциями рекомендуется литература [ 1,4,8 ]. Для более полного изучения можно воспользоваться монографией А.И. Мальцева [ 5 ] или Р. Петер [ 6 ]. Книга [ 6 ] вместе с тем написана достаточно просто и понятно даже для неподготовленного читателя.
Дата добавления: 2014-01-07; Просмотров: 1025; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |