色々再帰ネタが出ていますね。
http://blogs.wankuma.com/nagise/archive/2007/09/17/96609.aspx
http://blogs.wankuma.com/episteme/archive/2007/09/16/96488.aspx
再帰って問題をシンプルに解決するには非常に有用な手法なんですが、昔JSONパーサを書いたときに失敗しました。再帰で処理していたのですが、ユーザ入力のJSONをパースするので、[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[のような入力が与えられると、スタックがオーバーフローしてしまいました。結局これはオートマトンで実装しました。
再帰を使う局面は、再帰の深さがシステム上において、認知かつ許容できるレベルにあるときに制限すべきでしょう。