关于回溯法自己的理解

今天看了紫书,感觉之前学的毛毛躁躁的,今天又重新打磨了一下,觉得又新领悟了一些:

如果某问题的解可以由多个步骤得到,而每个步骤都有若干种选择(这些候选方案集可能会依赖于先前作出的选择)

这句话,简简单单但好像让我突然一下明白了(之前自己也看过很多题,今天重新的看了一下定义,觉得有道理的)

递归调用是一层一层调用,而在每一层又有不同的选择方法,这就可以生成一个解答树

而在书上有解答树的结构(已经加入了一些剪枝在里面的),在依次每一种选择往下继续调用的时候,如果判断不合法或者已经走到叶子结点了,就不能再自己进行递归调用了,而需要返回上一层调用的地方,然后开始另外一种选择,这个就叫回溯:简单的说:递归函数不再调用它自身,而是返回上一层调用

所以在程序中通常会有return来通过判断条件把程序返回掉

关于恢复现场,哈哈哈哈,这个笑死我了。说实话听着高大上,但其实本质是一样的,比如在多组文件操作里面,需要用到一个数组来进行标记,这个时候,每做一次必然是要把这个标记数组清空进行重来的,其实恢复现场就是这么个理。你在这一层递归的时候标记过了,好了,现在不能继续下去了(下面使用的标记数组肯定是全新的,不用干啥的),如果满足返回条件了,返回上一层调用了,换到上一层的其他选择去了,自然不能用刚刚的数据来干扰新的递归,所以把数组清空就行了,原来是啥样,就把他恢复到啥样,就这。通俗易懂的

书,是必须要看的,看书之后发现自己对某些结构啥的领悟更深了。

posted @   小志61314  阅读(48)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示