微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无限递归和sys.setrecursionlimit可以停止脚本而不会出现任何错误

如何解决无限递归和sys.setrecursionlimit可以停止脚本而不会出现任何错误

我想通过测量运行时间来做一些小实验,特别是比较斐波那契的三种实现:递归,lru_cache和线性(线性空间)。我不小心以创建无限递归的方式实现了lru_ache版本:

@lru_cache(None)
def fibo_cache(n):
    return fibo_cache(n)

(基本上我想先重用递归版本,但是后来我发现它不会将缓存应用于递归调用,因此将其更改为此)

这导致我的程序只是停止而没有任何错误或消息。如果从IDLE启动,它会创建RESTART: Shell行并返回REPL

documentation page of lru_cache上,我没有提到要停止脚本。

这是预期的行为,还是可能的错误

编辑:

我已通过sys将递归限制设置为500_000。不过,我仍然希望有一个例外。 documentation

这应该小心,因为限制太高会导致崩溃。

但不会说我不会收到任何消息。但是,可能是这种情况。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。