对回溯的初印象
1 之前一直在想回溯到底是一个怎么样的过程, 一直想的也很迷
在画了一个简单的草图之后, 发现, 我们不必要知道每一层到底经历了怎么样的回溯, 所有的回溯肯定是从最底层的递归(即终止条件到达时)开始回溯的
所以, 我们只需要确定单层的逻辑, 然后进行回溯即可
2 另外, 有回溯的地方, 好像一定是有分支的地方, 正是因为有了分支, 才会导致进入一边的分支收集的结果会对另一边分支收集到的结果造成影响, 所以我们才需要进行回溯, 通过回溯去除掉一边递归收集到的仅自己 需要的结果, 只保留同一层递归共同需要的结果, 这才是回溯的真正目的
3 回溯出现的场景:
按照2中的说法的话, 回溯就应该出现在使用一个容器收集所有的结果集的情况, 即 关于递归的 "结果集的收集" 与 "返回值向上传递" 中的第一种递归方式
但是总感觉第一种递归方式的话, 也可能出现回溯, 但是因为return 的条件限制, 总感觉怪怪的, 不过, 因为两种递归方式本质上是一样的, 所以, 两者的联系在 关于递归的 "结果集的收集" 与 "返回值向上传递"也有说明, 总之, 我们要找到直接父子级之间的共同关联, 对, 记住, 我们回溯的最终一定是这个关联, 对结果集的回溯也是如此.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通