ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

关于回溯法自己的理解

2022-06-19 16:02:01  阅读:153  来源: 互联网

标签:一层 返回 调用 递归 标记 理解 关于 数组 回溯


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

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

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

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

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

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

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

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

标签:一层,返回,调用,递归,标记,理解,关于,数组,回溯
来源: https://www.cnblogs.com/ccwz7/p/16390627.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有