次のようにすると、大きな 'n'のスタックオーバーフローが発生し、その理由を理解できます。このコードによってスタックオーバーフローが発生するのはなぜですか?
def factorial(n)
(n > 1) ? (return (n * factorial(n - 1))) : (return 1)
end
なぜ次の原因でオーバーフローするのでしょうか?
def factorial(n, k)
(n > 1) ? (return factorial(n - 1, lambda {|v| return k.call(v * n)})) : (return k.call(1))
end
オーバーフロー?またはStackOverflow ?! –
-1、ユーザーボイスに属しています。 –