末尾再帰関数の最適化機能
勘違いしていたので反省をこめて記述 本来ループ処理の出来ない関数型言語はデフォルトでコンパイラ等が対応、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命名ルールをどのようにするのか悩みどころです。