Ruby:堆栈级别太深(SystemStackError)maxlimit

Ruby:堆栈级别太深(SystemStackError)maxlimit,第1张

概述以下是我的示例代码: def test(v) test(v-1) if v > 0 p vend 如果我打电话给测试(11893)它工作正常. 如果我有v> 11893,它正在抛出SystemStackError. 如何增加此错误的限制? MRI默认关闭 tail recursion优化.但有人可能是 turn it on: RubyVM::InstructionSequence.com @H_419_6@ 以下是我的示例代码:

def test(v)  test(v-1) if v > 0  p vend

如果我打电话给测试(11893)它工作正常.
如果我有v> 11893,它正在抛出SystemStackerror.
如何增加此错误的限制?

解决方法 MRI默认关闭 tail recursion优化.但有人可能是 turn it on:

RubyVM::InstructionSequence.compile_option = {  tailcall_optimization: true,trace_instruction: false}

此外,代码本身必须使用尾递归:

def test(v)  return unless v > 0  p v  test(v-1) end
总结

以上是内存溢出为你收集整理的Ruby:堆栈级别太深(SystemStackError)maxlimit全部内容,希望文章能够帮你解决Ruby:堆栈级别太深(SystemStackError)maxlimit所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1291493.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-10
下一篇 2022-06-10

发表评论

登录后才能评论

评论列表(0条)

保存