问题描述
我试图找出列表中数字的总和以给出所需的值 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 (将#修改为@)