Menu
CoddyTech

记忆化

Coddy 动态规划入门 课程的第 4 课,共 15 课。

记忆化是一种用于动态规划的优化技术,它通过缓存开销较大的函数调用结果,并在再次遇到相同输入时返回缓存的结果,来加快程序运行速度。

要实现记忆化,你可以创建一个字典来存储已计算的结果,其中键是输入参数,值是对应的输出结果。在计算函数结果之前,你可以先检查是否已经计算过该输入,并将结果存储在字典中。如果是,就可以返回缓存的结果,而不必再次计算。否则,你需要计算结果并将其存储在字典中。

list 也可以用来实现记忆化。

记忆化可以显著加快动态规划算法的运行速度,尤其是在存在许多重叠子问题时。

challenge icon

挑战

简单

编写一个名为 fib 的 Python 函数,使用记忆化计算第 n 个斐波那契数。

  • 使用 memo 字典存储已经计算出的斐波那契数。
  • 计算第 n 个斐波那契数之前,检查它是否已经计算并存储在 memo 中。
  • 如果已经计算过,就返回缓存的结果。否则,使用递推关系 fib(n) = fib(n-1) + fib(n-2) 计算第 n 个斐波那契数,并将结果存入字典以供以后使用。

提示:最后检查一下答案,看看你是否正确使用了记忆化!

亲手试试

memo = {0: 0, 1: 1}

def fib(n):
    

动态规划入门中的所有课

自己练习: Python 在线编译器