这种问题如何用Python实现?
时间: 2024-10-23 18:07:59 浏览: 10
在Python中,你可以使用递归生成器函数(generator function)来解决这个问题,因为我们需要避免一次性计算所有的子集,而是逐个生成。这里是一个简单的实现:
```python
def generate_subsets(nums):
def _generate_subsetsHelper(i, current_subset):
if i == len(nums): # 基线条件:已处理完数组
yield current_subset # 生成子集并返回
else:
# 可选:包含当前元素
yield from _generate_subsetsHelper(i + 1, current_subset + [nums[i]])
# 可选:不包含当前元素
yield from _generate_subsetsHelper(i + 1, current_subset) # 直接递归下一个元素
return _generate_subsetsHelper(0, [])
# 测试
nums = [1, 2, 3]
subsets = list(generate_subsets(nums))
print(subsets)
```
当你运行这段代码时,它会打印出所有可能的子集列表。
阅读全文