Сравнение рекурсии с итерацией аналогично сравнению отвертки с крестообразной головкой и отвертки с плоской головкой. По большей части вы могли бы удалить любой винт с крестообразной головкой с плоской головкой, но было бы проще, если бы вы использовали отвертку, предназначенную для этого винта, верно?
Некоторые алгоритмы просто поддаются рекурсии из-за того, как они спроектированы (последовательности Фибоначчи, обход древовидной структуры и т. Д.). Рекурсия делает алгоритм более лаконичным и простым для понимания (следовательно, разделяемым и многократно используемым).
Кроме того, некоторые рекурсивные алгоритмы используют «Ленивая оценка», что делает их более эффективными, чем их итеративные братья. Это означает, что они выполняют дорогостоящие вычисления только в то время, когда они необходимы, а не при каждом запуске цикла.
Этого должно быть достаточно, чтобы начать. Я выкопаю несколько статей и примеров для вас тоже.
Ссылка 1: Хаскель против PHP (рекурсия против итерации)
Вот пример, когда программист должен был обрабатывать большой набор данных с использованием PHP. Он показывает, как легко было бы иметь дело в Haskel с помощью рекурсии, но поскольку у PHP не было простого способа реализовать тот же метод, он был вынужден использовать итерацию для получения результата.
http://blog.webspecies.co.uk/2011-05-31/lazy-evaluation-with-php.html
Ссылка 2: Мастеринг рекурсии
Большая часть плохой репутации рекурсии происходит из-за высокой стоимости и неэффективности в императивных языках. Автор этой статьи рассказывает о том, как оптимизировать рекурсивные алгоритмы, чтобы сделать их быстрее и эффективнее. Он также рассказывает о том, как преобразовать традиционный цикл в рекурсивную функцию, и о преимуществах использования хвостовой рекурсии. Его заключительные слова действительно суммировали некоторые из моих ключевых моментов, я думаю:
"рекурсивное программирование дает программисту лучший способ организации
код таким образом, чтобы его можно было обслуживать и логически согласовывать. "
https://developer.ibm.com/articles/l-recurs/
Ссылка 3: Является ли рекурсия более быстрой, чем зацикливание? (Ответ)
Вот ссылка на ответ на вопрос stackoverflow, похожий на ваш. Автор указывает, что многие тесты, связанные либо с рекурсивными, либо с зацикливаниями, зависят от языка очень . Императивные языки обычно быстрее используют цикл и медленнее с рекурсией и наоборот для функциональных языков. Я полагаю, что основной смысл этой ссылки заключается в том, что очень трудно ответить на вопрос в не зависящем от языка / ситуации слепом смысле.
Является ли рекурсия более быстрой, чем зацикливание?