递归是一种算法结构,回溯是一种算法思想
一个递归就是在函数中调用函数本身来解决问题
回溯就是通过不同的尝试来生成问题的解,有点类似于穷举,但是和穷举不同的是回溯会“剪枝”,意思就是对已经知道错误的结果没必要再枚举接下来的答案了,比如一个有序数列1,2,3,4,5,我要找和为5的所有集合,从前往后搜索我选了1,然后2,然后选3 的时候发现和已经大于预期,那么4,5肯定也不行,这就是一种对搜索过程的优化 回溯搜索是深度优先搜索(DFS)的一种
对于某一个搜索树来说(搜索树是起记录路径和状态判断的作用),回溯和DFS,其主要的区别是,回溯法在求解过程中不保留完整的树结构,而深度优先搜索则记下完整的搜索树。 为了减少存储空间,在深度优先搜索中,用标志的方法记录访问过的状态,这种处理方法使得深度优先搜索法与回溯法没什么区别了。
相关文章
- 03-16OA、CRM、ERP之间的区别和联系是什么?
- 03-16vue的proxy和defineProperty区别
- 03-1692、构造函数、拷贝构造函数和赋值操作符的区别
- 03-16make和new的区别
- 03-16var new 和 make的区别
- 03-16QStateMachine:QEvent和信号之间的区别?
- 03-16map和hashmap中的区别
- 03-16Python中tuple和list的区别?Python基础学习!
- 03-16vs2010 和vs2012的区别 副标题--Loaded事件走两次
- 03-16python 之 并发编程(守护线程与守护进程的区别、线程互斥锁、死锁现象与递归锁、信号量、GIL全局解释器锁)