反復への再帰またはその逆のアルゴリズムは、最も効率的な出力と末尾再帰で存在しますか?
好ましい言語は C# です。
例: 入力時に、このアルゴリズムは次の単純な関数を取得します。
public static ulong Factorial(ulong n)
{
return n == 0 ? 1 : n * Factorial(n - 1);
}
処理後、次のように戻ります。
public static ulong Factorial(ulong n)
{
ulong result = 1;
for (ulong i = 1; i <= n; i++)
result = result * i;
return result;
}