実践 F# 関数型プログラミング入門で「末尾再帰」とか「末尾最適化」というものを知りました。 作者様のブログによると、C#には末尾最適化はないそうだ。 よく訓練された C# 使いならばご存じの通り、C# に末尾最適化はない。より正確に言い換えるなら、C# 4.0 コンパイラは ‘tail.’ プリフィックスを付与しない。このことによって、C# プログラミングにおいては、再帰はおよそ避けるべきものとして認識されている。 http://igeta.cocolog-nifty.com/blog/2011/02/tailcall.html でも、x64版だと末尾最適化が行われるよと聞いたのと、ちょっと気になる書き方をしているので調べてみました。 とりあえず、普通の再帰 class Program { public static void Main(string[] args) { Console.
![F# – 泥庭](https://cdn-ak-scissors.b.st-hatena.com/image/square/8d71ff5111e05619a10d29bb40d7aebaa75c8fbc/height=288;version=1;width=512/https%3A%2F%2Fs0.wp.com%2Fi%2Fblank.jpg)