0

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

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

(基本上我是想先复用递归版本,后来发现它不会对递归调用应用缓存,所以改成这个)

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

lru_cache 的文档页面上,我没有发现停止脚本的提及。

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

编辑:

我已经通过 sys.set 将递归限制设置为 500_000。但是,我仍然希望有一个例外。它的文件

这应该小心完成,因为过高的限制会导致崩溃。

但并不是说我不会收到任何消息。然而,情况可能就是这样。

4

0 回答 0