次の関数は、n = 5,000の場合に「スタックレベルが深すぎます(SystemStackError)」を生成します
def factorial(n)
n == 0 ? 1 : factorial(n -1) * n
end
continuations / callccを使用してこのエラーを回避する方法はありますか?
ノート:
これは再帰なしで実装できることを私は知っています。例えば
def factorial2(n)
(1..n).inject(1) {|result, n| result * n }
end