再帰関数を作るための8ステップ

あろはさんところ(http://alohakun.blog7.fc2.com/blog-entry-225.html)で、Super Technique 講座 再帰関数の技(http://www.nurs.or.jp/~sug/soft/super/lisp.htm)というサイトが紹介されている。

flat の例のところらへんに,『再帰の最大のコツは、「自分が書いたプログラム(の機能定義)を信じること」なのである。』という言及がありましたが,まさしく ! という感じ.私も,いつもこういう感じで,終了条件をひたすら列挙,あとは自分自身を信じて Let's 再帰 ! という感じでプログラムを書いています. # 頭がセミコロンの一族にロックオンされていなければ,実はプログラムは,再帰で書くほうが,はるかにはるかに簡単なんですよ (≧▽≦)

とのこと。激しく同意。

どれどれ、とおもってリンク先を見てみたら、再帰関数がわからない人向けに、再帰関数を作る時の心構え8ステップが書かれていた。すごくわかりやすい。確かに、再帰関数書くときはこんな感じで考えてるわ。その8ステップを引用しようかと思ったけどそれなりに長いので、気になる人は、http://www.nurs.or.jp/~sug/soft/super/lisp.htm#sec5flatのあたりを読んで悟りましょう。

このへんが飲みこめると、さらに「ある構造に再帰的に関数を適用する」関数である、mapとかfoldrとかfoldlとかの汎用高階関数系も理解しやすいんじゃないかな。