加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
第一次知道 Ruby 可以实现尾递归,兴冲冲地试了一下,结果还是 stack level too deep……
是我哪里的姿势不对么?
RubyVM::InstructionSequence.compile_option = { tailcall_optimization: true, trace_instruction: false } def add(a, b) return a if b == 0 add(a + 1, b - 1) end p add(5, 10000)
RubyVM::InstructionSequence.compile_option = {
tailcall_optimization: true,
trace_instruction: false
}
def add(a, b)
return a if b == 0
add(a + 1, b - 1)
end
p add(5, 10000)
|