如何以正确的方式使用备忘录对象?

问题描述

我试图找出列表中数字的总和以给出所需的值 x 我使用动态方法

所以我试图在 Python 中缓存/记忆对象,但是有一个问题,一旦函数被执行,我的备忘录对象就没有清除它的值

def how_sum (n,li1,memo={}):
# memo = {}
if n in memo:
    return memo[n]
if n == 0: 
    return []
if n < 0:
    return None
else:
    for num in li1:
        rem = n-num
        result = how_sum(rem,memo)
        if result != None:
            memo[n] = result + [num]
            return memo[n]
memo[n] =  None
return memo[n]

def main():
    print(how_sum(7,[2,3]))
    print(how_sum(7,[1,5,3,4,7]))
    print(how_sum(8,6,5]))
    print(how_sum(300,[7,14]))
    print(how_sum(7,[5,8,3]))

if __name__ == "__main__":
    main()

输出

[3,2,2]
[3,2]
[2,7,7]
[3,2]

这是错误的,因为 4 和 5 输出列表分别包含 2 和 2,但 2 不在输入中,所以我如何在每次调用时清除我的 memo 对象,即(Python 中的缓存/记忆对象) function

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)