Другие языки программирования и технологии

Слышал, что программисты и даже с опытом не любят рекурсию. Почему так?

Глупость.

Существует немало алгоритмов, которые в рекурсивной форме записывать намного проще и удобнее, чем в виде циклов. А в функциональных языках ты вообще без рекурсии прожить не сможешь.

Но надо понимать, что рекурсия - это дополнительные накладные расходы, а далеко не все компиляторы умеют автоматически преобразовывать хвостовую рекурсию в цикл. Так что осознанное решение об использовании рекурсии в императивных языках - это всегда компромисс между удобством и затратами ресурсов.
ЭВ
Эдуард Валентинович Землянский
71 828
Лучший ответ
У рекурсии есть некоторые опасности, например бесконечная (или практически безконечто долгая) рекурсия и переполнение стека. Поэтому ее не то чтобы не любят, но опасаются.
Пример из жизни.
Была как-то в "Икее" любопытная скидка: купи 2 пуфика и получи третий бесплатно. Ну или не пуфика. Но пусть будут пуфики.
И пришел Большой Икеевский Босс. И увидел он, что скидка - это хорошо. И сказал: "Всем работникам - по пуфику!". Достал свою платиновую кредитку, подошел к кассе и заказал 60 пуфиков. Т. е. за 40 надо заплатить, 20 - в подарок.
А потом касса начала вычислять скидку:
1 пуфик + 2 пуфик - 3 бесплатно.
1 + 3 - 2
1 + 4 - 2. Ну или 3.
И так далее.
Всего 40! вариантов, если не ошибаюсь.
И зависла касса навечно.
И сказал Большой Босс, что это нехорошо.
И долго еще соседний отдел нашей конторы воевал с оптимизацией пуфиков.
Такие дела.
Потому что переполнение стека может наступить.
Pasha ____ Это где сейчас переполнение стека может наступить? Вроде везде уже оптимизируют.
Помимо выше сказанного, рекурсия сдерживает декодеры процессора, т. к нарушается последовательность выборки команд из кэша, + переполняется BTB(Branch Target Buffer), которая ведет к более частым промахам в кэше.
Артур Курило
Артур Курило
8 452
Ну не знаю почему ты такое слышишь, это к доктору. Вроде наоборот сейчас ФП популярно.