以下是普通递归实现的斐波那契数列函数:
def fib(n): if n <= 1: return n return fib(n-1) + fib(n-2)
该函数存在大量重复计算的问题,若使用记忆化进行优化,下列说法正确的是?
记忆化优化无法改变该函数的时间复杂度,依然为O(2^n)
可以通过from functools import lru_cache并在函数上添加@lru_cache(maxsize=None)装饰器实现记忆化优化
from functools import lru_cache
@lru_cache(maxsize=None)
记忆化只能通过手动定义字典存储已计算的结果实现,无法使用Python内置工具
使用记忆化后,该函数的空间复杂度会变为O(1),因为不需要再维护递归栈和缓存