Если у вас есть интерес к искусству программирования, а также к веселью и волшебству, которые необходимы для создания нашего современного компьютерного мира, вы слышали термин «рекурсия» или «рекурсивное программирование». Использование рекурсии в нашем кодировании позволяет нам сэкономить кучу времени и энергии при написании программ, и любой достойный программист умеет играть в рекурсию и всегда получает выгоду от ее использования. Но что такое рекурсивное программирование и как мы можем использовать его для оптимизации наших приложений и решения сложных задач? Не бойтесь — вы пришли в нужное место, чтобы получить ответы на эти вопросы.
В нашем руководстве мы рассмотрим рекурсию и то, как мы используем её в современной вычислительной среде. Мы рассмотрим концепцию рекурсии и разберём, как использование рекурсивного программирования сокращает любую задачу до размера, независимо от того, насколько большой она может показаться на первый взгляд. Наконец, мы рассмотрим рекурсивное программирование в действии и увидим, как оно сокращает ранее сложный и длинный код до приемлемого размера. К тому времени, когда вы закончите эту статью, вы лучше поймёте рекурсивное программирование и по достоинству оцените его как краеугольный камень современной разработки программного обеспечения.
Итак, что такое рекурсивное программирование?
Основная концепция рекурсии — это представление о том, что любую задачу можно решить, какой бы сложной она ни была, за счёт сведения более крупной проблемы к серии повторяющихся решаемых проблем. Разделение вашей работы на несколько отдельных мини-задач позволяет вам рассматривать каждую из подзадач как отдельную задачу. Затем эту задачу можно разбить на подзадачи (которые фактически являются подзадачами основной). После того, как вы деконструировали задание до его мельчайших компонентных задач, вы можете применить рекурсию.
Поскольку теперь вы работаете с базовыми задачами, теперь вы можете установить условия, которым должна соответствовать каждая задача, прежде чем более крупная программа сможет закрыть её и продолжить. Если, например, необходимо выполнить требования, чтобы заполнить банку мармеладом, задача может заключаться в том, чтобы добавить в банку один мармелад. После того, как вы разработали код для выполнения этой единственной задачи, вы сможете применить условия, чтобы задание повторялось до тех пор, пока банка не будет заполнена. Повторение кода до тех пор, пока не будут выполнены условия, — вот в чём суть рекурсии. Лучше всего то, что после того, как вы проработаете задачу и требования в первый раз, вы сможете применять то же решение каждый раз, когда сталкиваетесь с аналогичной задачей в своём коде.
Освоение рекурсии заставит вас почувствовать себя чемпионом!
Рекурсия в действии
К этому моменту вы, вероятно, уже в целом понимаете, что влечёт за собой рекурсивное программирование. Чтобы разобраться в концепции, нам нужно взглянуть на код. Я всегда говорю, что конкретные примеры лучше всего подходят для реализации сложных концепций, даже когда люди не спрашивают. (Это может быть немного неудобно.) Давайте рассмотрим типичную ситуацию, в которой рекурсивное программирование может сэкономить вам часы или даже дни на поисках строк идентичного кода.
В нашем примере мы поставим цель найти 3 (факториал). Мы можем написать код так, чтобы он складывал всё вместе по одному шагу за раз, но если бы мы искали более крупный или более сложный результат, например 1,429,033 или что-то столь же устрашающее, мы бы столкнулись с идентичным кодом. Вместо этого мы используем рекурсию. Мы пишем одну строку, которая создаёт цикл до тех пор, пока условие не будет выполнено. Таким образом, тысячи строк кода могут стать одной строкой.
И это всё о рекурсивном программировании. Если вы начинаете карьеру программиста и всё ещё изучаете основы, рекурсивное программирование будет для вас находкой. При правильном использовании рекурсивное программирование упростит ваш код и поставит вас на место водителя в вашей карьере программиста!
ЧИТАЙТЕ ТАКЖЕ:
- Языки функционального программирования: полное руководство.
- Функциональное программирование или ООП: что лучше для вас?