Интересная тема — рекурсия. С одной стороны, это очень элегантное решение для некоторых задач. Например, обход деревьев, вычисление факториала, Фибоначчи (хотя для последнего есть итеративный подход, который эффективнее).
С другой стороны, бесконечное погружение в себя может привести к переполнению стека. Это как ходить по кругу, не видя выхода. И часто код, написанный с использованием рекурсии, сложнее для понимания, чем его итеративный собрат. Особенно для новичков.
Я вот помню, как впервые столкнулся с рекурсивным методом сортировки QuickSort. Сначала мозг кипел, пытаясь уследить за всеми вызовами. Но потом, когда понял принцип, стало немного понятнее. Хотя до сих пор предпочитаю итеративные варианты, где это возможно.
Главный вопрос: стоит ли рекурсия потраченного времени на ее изучение и отладку? Не лучше ли потратить это время на более фундаментальные вещи, которые пригодятся в 90% случаев? Или рекурсия — это тот инструмент, который должен быть в арсенале каждого программиста, чтобы решать нестандартные задачи?
А вы как считаете? Часто используете рекурсию? Или стараетесь избегать?

