我用functools.lru_cache
来实现斐波纳契数组,用的是备忘录.但我不了解我的输出生成的点击数.我的代码如下:
@lru_cache(maxsize=8)
def fib(n):
if n <2:
return n
else:
return fib(n-1) + fib(n-2)
print(fib(30))
print(fib.cache_info())
输出为
CacheInfo(hits=28, misses=31, maxsize=8, currsize=8)
个
我知道未命中的次数是31(fib(0),...fib(30))
但点击量应该是58次.例如,fib(2)应该对fib(0)和fib(1)命中,而对fib(2)命中.因此,每个呼叫都会产生一次未命中和两次命中.
我试着在网上搜索,但没有得到多少相关的结果.