自分の頭に浮かんだものを書き出している最中はどんな変態的なループでも書けちゃうもんだけど、
それで自分の想定した結果が間違っていたら、どこに間違い、勘違いがあるのかコードを読まなくちゃいけないだろ?
そんなときにfor文を変態的に書いてると、何が変動しているのかすごく読みづらい。
じゃあ再帰ならどうかというと、変動する値の数が少なくて済む場合が多いので、「書いた関数の意図=定義をはっきりさせておく」ことができていればデバッグしやすい。
一度でも再帰が使いやすい言語を触れば、そういう思考が身につくからおすすめよ。

大学一年の授業でCを一通り触ったけど、再帰を使って文字列を反転させる関数を作れって課題が一番苦労した。
関数をN88BASICのgosub程度のものと認識していたから。