关于回溯法自己的理解
今天看了紫书,感觉之前学的毛毛躁躁的,今天又重新打磨了一下,觉得又新领悟了一些:
如果某问题的解可以由多个步骤得到,而每个步骤都有若干种选择(这些候选方案集可能会依赖于先前作出的选择)
这句话,简简单单但好像让我突然一下明白了(之前自己也看过很多题,今天重新的看了一下定义,觉得有道理的)
递归调用是一层一层调用,而在每一层又有不同的选择方法,这就可以生成一个解答树
而在书上有解答树的结构(已经加入了一些剪枝在里面的),在依次每一种选择往下继续调用的时候,如果判断不合法或者已经走到叶子结点了,就不能再自己进行递归调用了,而需要返回上一层调用的地方,然后开始另外一种选择,这个就叫回溯:简单的说:递归函数不再调用它自身,而是返回上一层调用
所以在程序中通常会有return来通过判断条件把程序返回掉
关于恢复现场,哈哈哈哈,这个笑死我了。说实话听着高大上,但其实本质是一样的,比如在多组文件操作里面,需要用到一个数组来进行标记,这个时候,每做一次必然是要把这个标记数组清空进行重来的,其实恢复现场就是这么个理。你在这一层递归的时候标记过了,好了,现在不能继续下去了(下面使用的标记数组肯定是全新的,不用干啥的),如果满足返回条件了,返回上一层调用了,换到上一层的其他选择去了,自然不能用刚刚的数据来干扰新的递归,所以把数组清空就行了,原来是啥样,就把他恢复到啥样,就这。通俗易懂的
书,是必须要看的,看书之后发现自己对某些结构啥的领悟更深了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具