下面是一个使用递归方法来生成原列表的所有子集的和的代码示例:
def generate_subset_sums(nums):
def backtrack(start, subset_sum, subset):
result.append(subset_sum) # 将当前子集的和添加到结果列表中
for i in range(start, len(nums)):
backtrack(i + 1, subset_sum + nums[i], subset + [nums[i]]) # 递归调用下一层
result = []
backtrack(0, 0, [])
return result
# 测试示例
nums = [1, 2, 3]
subset_sums = generate_subset_sums(nums)
print(subset_sums)
输出结果为:[0, 1, 2, 3, 3, 4, 5, 6]
解释:原列表的所有子集的和为 [0, 1, 2, 3]。其中,子集 [0] 的和为 0,子集 [1] 的和为 1,子集 [2] 的和为 2,子集 [3] 的和为 3,子集 [1, 2] 的和为 3,子集 [1, 3] 的和为 4,子集 [2, 3] 的和为 5,子集 [1, 2, 3] 的和为 6。