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