末尾再帰関数の最適化機能

 勘違いしていたので反省をこめて記述  本来ループ処理の出来ない関数型言語はデフォルトでコンパイラ等が対応、Python2.4は変態なので関数のAttrib(@tail_recursive)として実装済み,C#x64 Releaseのみコンパイラが最適化しれくれるそうです。  C#で末尾再帰関数はリファクタリング時に自力でループに変更した方が安全ですね。

 public int TailRecursive(int n, int res = 1)
        {
            if (1 == n)
                return res;
            var toatal = res * n;
            return TailRecursive(n - 1, toatal);
        }

変換後

public int LoopChangeTail(int n)
        {
            var res = 1;
            for (;;)
            {
                if (1 == n)
                    break;
                res *= n;
                n--;
            }
            return res;
        }

だけど、リファクタリング対象にするにはMethod命名ルールをどのようにするのか悩みどころです。