python-3.x - 递归问题中的 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 变量合并到函数范围内。
解决方案
推荐阅读
- javascript - 我无法将输入值设置为“筹码”
- python - 为什么 Python 递归如此昂贵,我们能做些什么呢?
- python - mongoengine.errors.FieldDoesNotExist:文档“Users”中不存在字段“{'username','password'}”:FastAPI 中的错误
- html - 如何使用 *ngIf 隐藏标题而不隐藏内容?
- vue.js - 在 Vuejs KendoGrid 中渲染图像的最简单方法是什么?
- wordpress - 子菜单不显示在 wordpress 的主菜单中(buddypress)
- css - CSS中是否有“本地范围”动画定义?
- arrays - 水晶报表:使用拆分字符串中的数组作为子报表中的数据源
- reactjs - 我如何修复反应和 laravel sanctum 中的 401 未经授权的错误
- javascript - Asp.net core - 引导模式上的 Chane 图像