Я думаю, это зависит от того, о какой рекурсии вы говорите.
Первое, что открывает глаза (например, если вы работаете через SICP), это то, что итерация может быть заменена рекурсией. Все эти утомительные и подверженные ошибкам циклические коды, которые вы написали в прошлой жизни, могут быть выполнены другим способом. Это круто и (как ты выразился) "о, блестящий!" опыт.
Следующим откровением является то, как мало этого рекурсивного кода, который вы действительно будете писать в реальной жизни. Вместо этого вы избежите утомительной итерации - и утомительной рекурсии, обе - используя строительные блоки, такие как map
и fold
.
Кроме того, в Racket вы, вероятно, закончите от map
и fold
до предпочтения "пониманий", таких как for/list
, for/vector
и for/fold
, которые работают с последовательностями, а не просто списками. По пищевой цепочке ты продолжаешь идти.
Сказав это, есть некоторые проблемы, которые вы лучше всего решите рекурсивно (не просто "итерация другими средствами"). И уровень комфорта, который вы получили в откровении номер один, поможет мне, я думаю.