以下是我的示例代码:
def test(v)
test(v-1) if v > 0
p v
end
Run Code Online (Sandbox Code Playgroud)
如果我打电话test(11893)
它工作正常.如果我有v > 11893
,那就是扔SystemStackError
.如何增加此错误的限制?
RubyVM::InstructionSequence.compile_option = {
tailcall_optimization: true,
trace_instruction: false
}
Run Code Online (Sandbox Code Playgroud)
此外,代码本身必须使用尾递归:
def test(v)
return unless v > 0
p v
test(v-1)
end
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
97 次 |
最近记录: |