我的代码没有显示最短的子集,例如[7],或者它没有读取所有的子集[7],[3,4],以返回最短的子集。可以解释为什么只有一组结果是返回的,我应该如何修改它以显示所有子集?谢谢
下面是我想要遵循的代码的图片
def howsum(targetsum,numbers,combo=None):
if combo == None:
combo = list()
if targetsum == 0: return [ ]
if targetsum < 0: return None
shortcombo = None
for number in numbers:
remainder = targetsum - number
combo = howsum(remainder,numbers,combo)
if combo != None:
combo.append(number)
if shortcombo == None or len(shortcombo) > len(combo):
shortcombo = combo
return shortcombo
return shortcombo
print(howsum(7,[4,3,7]))
我不确定这一点,但在python中定义函数并给出两组代码时,调用函数时实际上并没有执行第二组代码。我在其他项目中遇到了同样的问题。我没有得到答案,只是说我在代码中犯了一些错误
增加了记忆,但是里面有1组num。结果乱七八糟
此代码由DarylG works发布。通过将
.append
更改为[*list,var]
,我不明白为什么函数append和*编写的代码与原始JavaScript非常匹配
虽然JavaScript名称可以工作,但我对函数和变量名称进行了重构,使之与Python style一致,即:
代码
测试
使用记忆(即缓存)
相关问题 更多 >
编程相关推荐