Pull to refresh

Comments 20

ещё нет) это в todo на ближайшее время )
напоминает обход лабиринта без циклов с одним входом — идем все время держась за левую (или правую) стену :-)
А зачем? В большинстве случаев рекурсия вполне приемлема. В тех случаях, где не приемлема рекурсия, пойдёт стандартный стек. А настолько глубокого дерева, где стек будет неработоспособен я не знаю.
ИМХО — баловство.
Не совсем так. Дерево из 100,000 элементов вполне может быть высотой в 100,000 элементов.
Это настолько частный случай, что в реальной практики врядли с ним встретишься.
Ну и для обсчёта таких специфических данных надо использовать специфические языки знающие, что такое хвостовая рекурсия.
обновил пост, дописал в конце — почему родилась эта штука )
Очень удобно, когда нужно сделать кучу разных действий с деревом, в разных местах.
Если рекурсия — то приходится писать кучу вспомогательных неудобных функций.
Особенно если доступ к дереву нужен из другого класса.

Спасибо! Сейчас допишу это в пост.
Чего-то я не уловил сути… Зачем нужны «вспомогательные функции»?
Да, я сам не люблю рекурсию, но иногда она выглядет куда красивее огорода со стеком или вот таким решением.
Ну ладно, не буду спорить, благо, что решение приятное и не сложное. Просто хочу сказать, что это довольно специфическая вещь и нужна не часто, но стоит иметь такое решение в виду.
Собственно у Кнута на эту тему было красиво…
UFO just landed and posted this here
UFO just landed and posted this here
Ждем статью «Сортировка менее чем за n^2»
тогда уж так «красивая сортировка за n^2, а не тот огород с n * log(n)»
UFO just landed and posted this here
Ага, но с блэкджеком и шлюхами :)
Вы что-то пропустили… есть такая штука, называется boost::graph, которая в частности применима к деревьям.

Там есть:
* Различные варианты представления графа в памяти (можно, например, использовать граф, оптимизированный под поиск, а можно оптимизированный под добавление элементов)
* Хранение данных не только в узлах, но и в связях между узлами.
* Двусторонние/односторонние связи.
* В полпинка (в 100 строчек) делается вывод графа в png файлы (через graphvis).
* Куча разных итераторов, перебирающих граф в разных порядках.
* Уже реализованные разные алгоритмы, вроде поиска кратчайшего пути.

и т.д.

Sign up to leave a comment.

Articles