两种思路! 思路 1 单看每个元素,都有两种选择:选入子集,或不选入子集。 比如[1,2,3],先看1,选1或不选1,都会再看2,选2或不选2,以此类推。 即,考察当前枚举的数,基于选它而继续,是一个递归分支;基于不选它而继续,又是一个分支。 用索引index代表当前递归考察的数字A[index]。 当index越界时,说明所有数字考察完了,得到一个解,把它加入解集,结束当前递归分支。 为什么要回溯? 因为不是找到一个子集就完事。 找到一个子集,结束递归,要撤销当前的选择,回到选择前的状态,做另一个选择——不选当前的数,基于不选,往下递归,继续生成子集。 回退到上一步,才能在包含解的...