You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python打印幂集代码出现重复输出的原因排查

代码重复输出问题根本原因分析
  • 递归函数内部逻辑冗余,多嵌套了一层不必要的循环
    print_subsets 函数的核心逻辑是回溯生成子集,正确的逻辑是:选中下标为child_index的元素拼接进当前路径后,只需要递归处理child_index + 1起始的后续位置即可,不需要额外嵌套一层for l in range(child_index + 1, n)循环触发递归。
    你当前的写法会导致同一条路径被多次递归触发,比如示例中的重复项[0,1,3]就是这么产生的:

当child_index = 1时,生成路径[0,1]后,内层循环会分别调用print_subsets(2, [0,1])和print_subsets(3, [0,1]);调用print_subsets(3, [0,1])时会直接打印[0,1,3];调用print_subsets(2, [0,1])时,遍历到child_index = 3又会再次打印[0,1,3],产生重复。

  • 外层递归调用逻辑错误,重复触发递归
    外层循环for j in range(1, n): print_subsets(j, [nums[0]])属于完全多余的重复触发:

当j=1调用print_subsets(1, [0])时,已经完整生成了所有包含0、长度大于等于2的子集;后续j=2、j=3的调用又会重新遍历起始下标2、3的位置,重复打印[0,2]、[0,2,3]、[0,3]等子集,进一步放大了重复问题。

内容的提问来源于stack exchange,提问作者Stan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 16:54:03