python-3.x - 硬币找零问题 - 使用记忆 - 不工作
问题描述
硬币找零问题 - 试图获得最大数量的选项来进行找零。因此,使用记忆化编写了一个代码,但它只能在 n=980 之前工作。但是当我试图让一个更大的 n python 停止运行时 - “RecursionError:比较中超出了最大递归深度”。
我该如何解决?
def find_num_changes_mem(n, lst, memo=None):
if n==0:
return 1
if n<0 or lst==[]:
return 0
if memo==None:
memo={}
if (n,len(lst)) in memo:
return memo[(n,len(lst))]
else:
if lst[0]>n:
memo[(n,len(lst))]=find_num_changes_mem(n,lst[1:],memo)
else:
memo[(n,len(lst))]=find_num_changes_mem(n-lst[0],lst[0:],memo)+find_num_changes_mem(n,lst[(1):],memo)
return memo[(n,len(lst))]
解决方案
推荐阅读
- java - Java 水平镜像文本(在 JFrame 中旋转和镜像文本)
- netlogo - 如何比较距离
- python - 如何在决策树中划分数据集的连续变量列的类别?
- jquery - flex 方向 + 内容扩展问题
- bash - 使用 sed 编辑文件的 bash 脚本不会持续重启
- mysql - 如何减少单个查询中的冗余 MySQL 函数调用?
- c++ - 如何获得正确的数组维度来存储我的 DP 记忆 N 选择 K 问题的所有结果?
- reactjs - React Typescript:从文件输入中获取文件
- pandas - Pandas - 根据特定条件查找数据框中是否存在值
- php - 会话注销后未定义的索引