我编写了下面这个递归程序,它可以找到可以相加得到目标值的数字组合:
arr = [1, 2, 2, 3, 5]
target = 8
def comb_sum(arr, current_index, target, result, ans):
if target == 0:
print result
ans.append(result)
return 0
if target < 0:
return 1
if current_index == len(arr):
return 1
result.append(arr[current_index])
comb_sum(arr, current_index+1, target - arr[current_index], result, ans)
result.pop()
comb_sum(arr, current_index+1, target, result, ans)
return ans
print comb_sum(arr, 0, target, [], [])
由于我正在使用arr.append()将result
附加到数组中,我期望得到正确的输出。
尽管程序是正确的,但我无法将列表result
添加到ans
中。
出了什么问题?
我期望得到以下输出结果:
[[1, 2, 2, 3],
[1, 2, 5],
[1, 2, 5],
[3, 5]]
但实际上我得到了以下输出结果:
[[], [], [], []]
ans
,它应该是我正在解决的问题的正确答案:找到可以相加以达到目标值的数字组合的程序:
- yask