对回溯的初印象
1 之前一直在想回溯到底是一个怎么样的过程, 一直想的也很迷
在画了一个简单的草图之后, 发现, 我们不必要知道每一层到底经历了怎么样的回溯, 所有的回溯肯定是从最底层的递归(即终止条件到达时)开始回溯的
所以, 我们只需要确定单层的逻辑, 然后进行回溯即可
2 另外, 有回溯的地方, 好像一定是有分支的地方, 正是因为有了分支, 才会导致进入一边的分支收集的结果会对另一边分支收集到的结果造成影响, 所以我们才需要进行回溯, 通过回溯去除掉一边递归收集到的仅自己 需要的结果, 只保留同一层递归共同需要的结果, 这才是回溯的真正目的
3 回溯出现的场景:
按照2中的说法的话, 回溯就应该出现在使用一个容器收集所有的结果集的情况, 即 关于递归的 "结果集的收集" 与 "返回值向上传递" 中的第一种递归方式
但是总感觉第一种递归方式的话, 也可能出现回溯, 但是因为return 的条件限制, 总感觉怪怪的, 不过, 因为两种递归方式本质上是一样的, 所以, 两者的联系在 关于递归的 "结果集的收集" 与 "返回值向上传递"也有说明, 总之, 我们要找到直接父子级之间的共同关联, 对, 记住, 我们回溯的最终一定是这个关联, 对结果集的回溯也是如此.