nepster-web
@nepster-web

Ваше отношение к рекурсии?

Где-то примерно еще лет 5 назад у меня сложилось сомнительное мнение в отношении рекурсий.
Однако последнее время в них возникает некоторая необходимость.

Например если у вас есть ар-объект с множеством реляций в 3 или 4 вложенности и есть задача обернуть это все дело в коллекций. Тоесть каждую запись вложенных реляций обернуть в коллекции.

Тут весьма сильно напрашивается рекурсия. Будет ли тут оправдано ее использование и вообще есть ли смысл их использовать или все-же избегать?
  • Вопрос задан
  • 867 просмотров
Решения вопроса 4
saboteur_kiev
@saboteur_kiev Куратор тега Программирование
software engineer
Рекурсия - это отличное решение для отдельных задач. Такое же, как использование case вместо if, или использование sql вместо массивов данных.

Просто используйте их там, где рекурсия работает лучше других решений и все. Есть множество задач, где рекурсия будет best practice.

Чтоже касается того, что "в каких-то языках это плохо работает", так пока не попробуете - не узнаете.
Ответ написан
Комментировать
@ollisso
Рекурсия - так же как и любой другой инструмент - это в первую очередь инструмент.

Её можно и нужно использовать там где её нужно и можно использовать :)

Есть многие задачи которые сложно решить без рекурсии, и в конце получиться что фактически вы реализуете рекурсию просто без вызова функции, фактически же рекурсия остаётся, просто менее ярко выраженная.

Если же можно реализовать без рекурсии задачу - то обычно лучше реализовывать без неё.
Ответ написан
Комментировать
Daniro_San
@Daniro_San
Программист
Рекурсия медленная - но хвостовую, gcc оптимизирует, итерациями заменяя.
Но она все равно медленнее циклов будет, проверить сие можно числа Фибоначчи исчисляя.
Впрочем люблю я ее больше нежели итерации ибо выглядит красивее она и сие есть факт.
Рекурсия, равно как и итерации, хороша в меру. Зная дао мы можем использовать и то и другое, ничем не управляя.
Рекомендую к прочтению "Дао дэ цзин", Лао Цзы. Книга ответит на многие вопросы касательно использования патернов ООП в своем проекте, рекурсии и много другого. В общем маст хэв каждого C++ программиста.
Ответ написан
Комментировать
@abcd0x00
При рекурсии создаются копии одних и тех же переменных многократно - жрётся память и время. Как бы там ни было, она имеет и максимальную глубину ещё - то есть при очень длинной обработке программа выпадет, потому что не хватит ресурсов системы для рекурсии. Так что память, время и граница - это то, чего нет в аналогичном цикле.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
GavriKos
@GavriKos
Ваше отношение к морозильнику? Где то примерно лет 5 назад сложилось сомнительное мнение, однако сейчас все чаще покупаю пельмени и их надо где то хранить.

Короче, вопрос бредовый. Если рекурсия вам упростит решение задачи - используйте ее смело.
Ответ написан
@protven
У меня отношение к рекурсии точно такое же как к рекурсии.
Ответ написан
@deliro
Рекурсия - это красивое зло. Лучше избегать, но иногда можно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы