首页 > 解决方案 > 递归问题中的 Python 装饰器类型错误

问题描述

当我使用装饰器使用 momoization 技术编写递归斐波那契函数时,例如:

from functools import lru_cache
init1 = {0:1,1:1}

@lru_cache(maxsize=10000)
def fib(n, init=init1):
  if n in init.keys():
    return init[n]
  else:
    return fib(n-1,init)+fib(n-2,init)

并运行 fib(5,init1),打印以下错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'dict'

我该如何处理?PS.:我想定义许多初始条件,这就是为什么我不将 init1 变量合并到函数范围内。

标签: python-3.xrecursionpython-decoratorsrecurrence

解决方案


推荐阅读