首页 > 解决方案 > Python:递归函数。如何返回targetsum的所有子集

问题描述

我的代码没有显示最短子集,例如 [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]))

标签: pythonrecursion

解决方案


我不确定这一点,但是在 python 中定义一个函数并给出 2 组代码时,在调用函数时它实际上并没有执行第二组代码。我在其他项目中遇到了同样的问题。我没有得到答案,只是说我在代码中做错了!!!


推荐阅读