Я хочу решить проблему с рекурсивной функцией, используя два словаря memoization, но я не уверен, как выполнить эту идею.Как я могу реализовать две memoization в одной функции?
Из того, что я узнал, при использовании только одного воспоминания, структура кода выглядит аналогично. Например, чтобы решить ряд Фибоначчи:
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 является ** декоратор **, и вы должны проверить 'None' на ** identity ** -' if mem is None '. – jonrsharpe