И это здорово. Тем больше шансов составить нормальный, итерационный алгоритм
.
А почему Вы считаете итерационные алгоритмы более "нормальными", чем рекурсивные?
Конечно, все зависит от ваших целей, но изучать рекурсию ради того, чтобы изучать рекурсию... увольте.
Изучать рекурсию надо потому, что она является одним из базовых методов решения задач в программировании, и, на мой взгляд, программист не может считаться полноценным, если он этим методом не владеет. Существует достаточно широкий класс задач, связанных, в первую очередь, с обработкой рекурсивных структур данных, которые с помощью рекурсивных алгоритмов решаются существенно проще и естественнее.
Кроме этого, рекурсия - основной метод программирования в функциональных языках, которые сейчас становятся всё более популярными вследствие того, что распараллеливание программы для работы на нескольких ядрах процессора дается в них существенно меньшей кровью (в силу отсутствия побочных эффектов).
А вообще-то, рекурсия хороша только для решения задач, для которых более быстрый алгоритм (с циклами) не придумывается. Все остальное - минусы.
Это слишком сильное утверждение.
Любой рекурсивный алгоритм может быть сведен к итеративному (в конце концов, можно имитировать стек вызовов вручную).
Что касается "быстроты", то, во-первых, не факт, что итеративная процедура будет работать заметно быстрее, чем рекурсивная, а во-вторых, во многих случаях те 3% выигрыша в скорости работы программы, которые обеспечит итеративный алгоритм, сведутся на нет усложнением программы и увеличением времени разработки. Ещё раз хотелось бы подчеркнуть: речь идёт только о тех задачах, где рекурсия является естественной.
Факториал и функция Фибоначчи - на мой взгляд, не очень удачные примеры, т.к. они прекрасно решаются обычным циклом. А уж рекурсивная реализация вычисления функции Фибоначчи, по два раза считающая каждое значение - это, скорее, пример того, как
не надо использовать рекурсию.