首页 > 解决方案 > 函数调用后Python字典不清除

问题描述

我有以下代码,它检查是否可以使用给定的数字列表来实现目标总和。我试图通过将值存储在字典中来记忆函数。

def how_Sum(target_Sum, numbers, memo={}):
    if target_Sum in memo:
        return memo[target_Sum]
    if target_Sum == 0:
        return []
    if target_Sum < 0:
        return None

    for num in numbers:
        remainder = target_Sum - num
        remainder_Result = how_Sum(remainder, numbers, memo)
        if remainder_Result != None:
            memo[target_Sum] = remainder_Result + [num]
            print(memo)
            return memo[target_Sum]

    memo[target_Sum] = None
    return None

现在当我这样调用函数时,我得到以下正确的结果。 print(how_Sum(7, [2, 3]))得到我,

{1: None, 3: [3]}
{1: None, 3: [3], 5: [3, 2]}
{1: None, 3: [3], 5: [3, 2], 7: [3, 2, 2]}
[3, 2, 2]

当我调用这个函数时,print(how_Sum(7, [5, 3, 4])我得到以下也是正确的,

{2: None, 1: None, 4: [4]}
{2: None, 1: None, 4: [4], 7: [4, 3]}
[4, 3]

现在,当我同时运行它们时,

print(how_Sum(7, [2, 3]))
print(how_Sum(7, [5, 3, 4]))

我得到这个结果,

{1: None, 3: [3]}
{1: None, 3: [3], 5: [3, 2]}
{1: None, 3: [3], 5: [3, 2], 7: [3, 2, 2]}
[3, 2, 2]
[3, 2, 2]

现在根据我的理解,字典是为第一个函数创建的,并且不会为第二个调用清除。有人能解释一下为什么会这样,以及如何纠正吗?

标签: python

解决方案


推荐阅读