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