Python 中等于目标值的子数组的元素总和(可以重复)

Sum of elements (can be repeated) of subarrays equal to a target value in Python

def howSum(targetSum, numbers):
    if targetSum == 0:
        return []
    if targetSum < 0:
        return None
    for num in numbers:
        remainder = targetSum - num
        remainderResult = howSum(remainder, numbers)
        if remainderResult != None:
            return [remainderResult, num]
    return None

我试过这段代码并得到答案 [[[[[]], 2], 2], 2], 2] 而不是 [2, 2, 2, 2]。我对编程和堆栈交换很陌生。请帮帮我。提前致谢

使用顺序解包。

而不是:

            return [remainderResult, num]

使用:

            return [*remainderResult, num]

完整代码:

def howSum(targetSum, numbers):
    if targetSum == 0:
        return []
    if targetSum < 0:
        return None
    for num in numbers:
        remainder = targetSum - num
        remainderResult = howSum(remainder, numbers)
        if remainderResult != None:
            return [*remainderResult, num]
    return None'

输出:

[2, 2, 2, 2]