我编写了一些代码,通过将作为列表一部分的数字相加,找到了获取数字之和最快的方法: bestSum( 3,800,1,3)将返回3,因为这将是获得3(第一个数字)的最佳方法,提供的数字将是简单地添加3。
def bestSum(target, lst, mochi = {}):
if target in mochi:
return mochi[target]
if target == 0:
return []
if target < 0:
return None
shortestCombination = None
for i in lst:
remainderCombination = bestSum(target - i, lst, mochi)
if remainderCombination is not None:
remainderCombination = [*remainderCombination, i]
if shortestCombination is None or len(remainderCombination) < len(shortestCombination):
shortestCombination = remainderCombination
mochi[target] = shortestCombination
return shortestCombination我遇到了这样的问题,在运行代码期间,数据将被保存,例如,如果我只运行
print(bestSum(8, [4])它回来了
[4, 4]但是如果我跑了
print(bestSum(8, [2, 3, 5]))
print(bestSum(8, [4]))它返回:
[5, 3]
[5, 3]我在这里做错什么了吗?这是一个潜在的安全漏洞吗?有什么方法可以正确地返回吗?什么会导致蟒蛇做这样的事情呢?
https://stackoverflow.com/questions/70699085
复制相似问题