>>57
>実装上じつは、ループで済んでしまうのでしたぁ!!!!!

Loopとrecueseは、末尾呼びだしのgoto(?)への置き換えという「簡単な」最適化をするだけで
理屈だけじゃなく実装上も等価になるからこそ、Lisperは堂々とrecurseしまくれる。
難しい最適化でもなんでもなく、単純な置換で済む。コストは極めて低い。

詳しいことは、Shiroさんとこの、「なんでも再帰」と「Schemeの実装におけるスタックフレーム」を。

あと、C(の標準的な姿)では末尾再帰の最適化はしにくいかもね。

ただ、一方で、

>>55
>recursion ならスッキリ書けるものをわざわざ汚いループ構文や制御変数を使って

という意見も片手落ち。
rubyみたいに内部ireraterが有れば、十分綺麗だし、
関数に、その関数が終ったら次に続けるべき「なにか」を
渡さなくてもいいので、かえってすっきり。