gpt4 book ai didi

python - 附加到递归函数中的列表

转载 作者:太空宇宙 更新时间:2023-11-04 03:11:26 24 4
gpt4 key购买 nike

我编写了以下递归程序,它找到可以相加以构成目标值的数字组合:

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]]
但是我得到了这个输出:
[[], [], [], []]

最佳答案

import copy
arr = [1, 2, 2, 3, 5]
target = 8
def comb_sum(arr, current_index, target, result, ans):

if target == 0:
print result
ans.append(copy.deepcopy(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, [], [])

关于python - 附加到递归函数中的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37895718/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com