Заметки о рекурсииЧто такое рекурсия?Программисты вкладывают в это понятие следующий смысл: рекурсия - это прием программирования, при котором программа вызывает саму себя либо непосредственно, либо косвенно.Обычно начинающий программист, впервые услышавший про рекурсию, впадает в легкое замешательство. Казалось бы, нет ничего более бессмысленного, чем рекурсия. Подобная цепочка вызовов никогда не завершится из-за зацикливания, или в лучшем случае завершится, но аварийно, когда задача исчерпает все наличные ресурсы компьютера.На самом деле рекурсия - это тонкий и изящный инструмент, который при умелом использовании способен сослужить добрую службу программисту.Почему именно рекурсия?Действительно, почему именно рекурсии выпала честь удостоиться отдельной статьи? Разве это не рядовой прием программирования, один из многих?Лично я выделяю рекурсию из общего ряда по многим причинам. Вот некоторые из них:Прежде всего, рекурсия красива. Первоначальное знакомство с ней может вызвать непонимание и легкий шок, но, овладев этим механизмом, вы вряд ли в дальнейшем сможете избежать соблазна пользоваться им время от времени. Изящество рекурсии в программировании я могу сравнить только с изяществом метода индукции в математике.Многие структуры, как искусственного, так и естественного происхождения, рекурсивны по самой своей сути. Рассмотрите ветви и корни деревьев, структуру сложной организации, иерархию классов в сложной программе, фракталы - в любой из этих структур вы найдете многочисленные повторения целого в части. Таким образом, многие сущности естественным образом могут быть смоделированы рекурсивными структурами. А чем же еще обрабатывать рекурсивную структуру, как не рекурсивной процедурой?Немало задач имеет также рекурсивную природу. Даже, пожалуй, большинство нетривиальных задач. По крайней мере, в программировании далеко не нов метод декомпозиции задачи на несколько более простых, те, в свою очередь, разделяются на еще более простые, и так до тех пор, пока не дойдем до элементарных частей,
Все для программирования.
Статья: "Заметки о рекурсии"
Комментариев нет:
Отправить комментарий