self.dfs(candidates, 0, path, target) return res defdfs(self, candidates, begin, path, target): if target == 0: self.res.append(path[:]) return for index in range(begin, len(candidate)): residue = target-candidates[index]
if residue<0: break# 提前终止 path.append(candidates[index]) self.dfs(candidates, index, path, residue) # 数字可重复使用,因此下一层继续从 index 开始。 path.pop()