对于一般的组合排列等问题,基本都可以使用回溯算法解决。回溯算法就相当于遍历一棵多叉树,而且它的方式其实非常类似于DFS,都是沿着路径一直遍历到叶子节点为止。这种形式递归肯定是少不了的。 以[1,2,3]为例,我们可以直接将可能的遍历路径画出来: 从图中可以很明显的看到,我们需要一直遍历到叶子节点才会得到需要的一个结果,那么回溯算法的结束条件就是使用完所有数字: if len(track) == len(num): res.append(track[:]) return...