遞歸和回溯的區(qū)別 遞歸與回溯發(fā)的區(qū)別是什么?
遞歸與回溯發(fā)的區(qū)別是什么?樓上的洗洗睡吧,別逗了遞歸是一種算法結(jié)構(gòu),回溯是一種算法思想一個遞歸就是在函數(shù)中調(diào)用函數(shù)本身來解決問題回溯就是通過不同的嘗試來生成問題的解,有點類似于窮舉,但是和窮舉不同的是
遞歸與回溯發(fā)的區(qū)別是什么?
樓上的洗洗睡吧,別逗了
遞歸是一種算法結(jié)構(gòu),回溯是一種算法思想
一個遞歸就是在函數(shù)中調(diào)用函數(shù)本身來解決問題
回溯就是通過不同的嘗試來生成問題的解,有點類似于窮舉,但是和窮舉不同的是回溯會“剪枝”,意思就是對已經(jīng)知道錯誤的結(jié)果沒必要再枚舉接下來的答案了,比如一個有序數(shù)列1,2,3,4,5,我要找和為5的所有集合,從前往后搜索我選了1,然后2,然后選3 的時候發(fā)現(xiàn)和已經(jīng)大于預(yù)期,那么4,5肯定也不行,這就是一種對搜索過程的優(yōu)化。
如何理解遞歸,回溯,動態(tài)規(guī)劃等算法?
遞歸比較簡單的,就是遞推的逆向算法。例如已知a(10)且a(n)=f(a(n 1)),讓你求a(1)?;厮菔巧疃葍?yōu)先搜索必須要用到的方法,推薦你看下“八皇后問題”,看完就應(yīng)該明白了。動態(tài)規(guī)劃是一種以空間換時間的算法,也就是占用內(nèi)存較大,但是時間效率比較高的分階段算法。推薦你看看“攔截導(dǎo)彈”問題,“0/1背包問題”。動態(tài)規(guī)劃先多看看題,然后再去理解概念比較好