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]
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]