0
我想使用两个memoization字典来解决递归函数的问题,但我不知道如何执行这个想法。如何在一个函数中实现两个记忆?
从我所学到的,当只使用一个memoization dicionary时,代码结构看起来很相似。例如,要解决斐波纳契数字:
def fib_mem(n,mem=None):
if n < 2:
return n
if mem == None:
mem = {}
if n not in mem:
mem[n] = fib_mem(n-1,mem) + fib_mem(n-2,mem)
return mem[n]
我应该添加到代码中以使用两个备忘录dicitionaries?我应该添加到def
行,并在递归调用?
我的问题:
list = [(16, 1, 4), (17, 2, 9), (3, 17, 10)]
这list [i][0]
是值。考虑到两个限制因素,我应该得到最大可能的组合值:list[i][1]
和list[i][2]
。
为什么要两本字典? – Kevin
你认为第二个字典会有所改进吗? – IanAuld
请注意,实现memoization的传统方式是使用**装饰器**,并且您应该通过** identity ** - 如果mem是None来测试'None'。 – jonrsharpe