Студопедия

КАТЕГОРИИ:


Архитектура-(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; Просмотров: 919; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.012 сек.