Задать вопрос

Циклы или рекурсия?

С точки зрения теории вычислительных процессов программа с рекурсией может быть заменена эквивалентной программой с циклами.


Какая альтернатива предпочтительна в программировании?

Что проще писать, читать, поддерживать?


Чтобы не уводить тему в сторону эффективности кода, предположим, что задача не глубокая по сравнению с размером стека. Или компилятор поддерживает хвостовую рекурсию.
  • Вопрос задан
  • 26702 просмотра
Подписаться 4 Оценить Комментировать
Ответ пользователя utyv К ответам на вопрос (6)
@utyv
Есть еще третий вариант: обобщенные функции, работающие со списками (массивами). map f l применяет функцию f к каждому элементу f и возвращает список результатов. filter p l возвращает список элементов, для которых выполняется условие p. fold f l «сворачивает» список, помещая функцию f между его элементами. Большинство циклов в имеративном коде можно свести к этим функциям. А если программист понял, как они работают, ему уже не надо отлаживать код глазами (что в случае цикла, что в случае рекурсии).
Надо только, чтобы язык поддерживал работу с функциями как со значениями. И анонимные функции не помешают (лябда-выражения по научному).
Ответ написан
Комментировать