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