以下是一段使用functools.lru_cache实现记忆化递归斐波那契数列的代码:
functools.lru_cache
from functools import lru_cache @lru_cache(maxsize=None) def fib(n): if n == 0 or n == 1: return n return fib(n-1) + fib(n-2)
关于这段代码,下列说法正确的是:
该代码无法正常运行,因为lru_cache不能装饰递归函数
lru_cache
调用fib(10)时会重复计算fib(5)两次
fib(10)
fib(5)
移除@lru_cache装饰器后,调用fib(30)的运行时间会明显变长
@lru_cache
fib(30)
该函数的缓存无法被手动清除