資料結構與演算法學習總結--遞迴
定義
特點
去的過程叫遞,回來的過程叫歸
什麼樣的問題可以用遞迴來解決?
同時滿足以下3個條件,就可以用遞迴來解決
- 一個問題的解可以分解為幾個問題的解
如果問題A,可以分解為若干子問題B、C、D,則可以假設問題B、C、D已經解決,在此基礎上思考如何解決A。並且只需要考慮問題A和子問題B、C、D之間的關係即可,不需要一層一層往下思考子子問題,遮蔽掉遞迴細節。
- 這個問題與分解之後的子問題,除了資料規模不同,求解思路完全一樣
- 存在遞迴終止條件
如何編寫遞迴程式碼
寫遞迴程式碼的關鍵是找出遞迴公式和終止條件
找到如何將大問題分解為小問題的規律,並基於此寫出遞推公式,然後再推敲終止條件,最後將遞推公式和終止條件翻譯成程式碼。
遞迴程式碼注意事項
- 警惕堆疊溢位
- 警惕重複計算
- 注意死迴圈遞迴
遞迴程式碼的優缺點
優點:程式碼簡潔
缺點:空間複雜度高、有堆疊溢位的風險、存在重複計算、過多的函式呼叫耗時長等問題
遞迴可以轉化為非遞迴實現,實際開發中,要根據情況來選擇是否使用遞迴方式來實現
相關文章
- 資料結構與演算法:遞迴資料結構演算法遞迴
- 前端學習 資料結構與演算法 快速入門 系列 —— 遞迴前端資料結構演算法遞迴
- 資料結構與演算法(十一)——演算法-遞迴資料結構演算法遞迴
- 資料結構和演算法:遞迴資料結構演算法遞迴
- Java資料結構與演算法--遞迴和回溯Java資料結構演算法遞迴
- 資料結構-遞迴資料結構遞迴
- 資料結構和演算法面試題系列—遞迴演算法總結資料結構演算法面試題遞迴
- 資料結構學習筆記-遞迴求解森林高度資料結構筆記遞迴
- 資料結構與演算法——歸併排序: 陣列&連結串列&遞迴&非遞迴解法全家桶資料結構演算法排序陣列遞迴
- 資料結構學習總結--圖資料結構
- 資料結構5_遞迴資料結構遞迴
- 學習資料結構與演算法心得資料結構演算法
- 資料結構與演算法學習-連結串列下資料結構演算法
- 資料結構與演算法學習-連結串列上資料結構演算法
- 資料結構與演算法讀書筆記 - 004 -C++遞迴資料結構演算法筆記C++遞迴
- 基礎資料結構之遞迴資料結構遞迴
- 遞迴總結遞迴
- 資料結構與演算法學習-陣列資料結構演算法陣列
- 資料結構與演算法學習-開篇資料結構演算法
- 學習JavaScript資料結構與演算法 (一)JavaScript資料結構演算法
- 《資料結構與演算法之美》資料結構與演算法學習書單 (讀後感)資料結構演算法
- 資料結構與演算法整理總結---跳錶資料結構演算法
- 資料結構與演算法整理總結---排序 2資料結構演算法排序
- 【Java資料結構與演算法筆記(二)】樹的四種遍歷方式(遞迴&非遞迴)Java資料結構演算法筆記遞迴
- 資料結構與演算法 | 迴文連結串列檢測資料結構演算法
- 資料結構:歸併排序(非遞迴)資料結構排序遞迴
- 演算法與資料結構學習路線圖演算法資料結構
- 資料結構與演算法-學習筆記(二)資料結構演算法筆記
- 資料結構與演算法-學習筆記(16)資料結構演算法筆記
- 資料結構與演算法學習筆記01資料結構演算法筆記
- 學習javascript資料結構與演算法(六)——圖JavaScript資料結構演算法
- 【PHP資料結構】PHP資料結構及演算法總結PHP資料結構演算法
- 資料結構與演算法整理總結---雜湊演算法資料結構演算法
- 【演算法與資料結構】經典排序演算法總結演算法資料結構排序
- 資料結構 其五 樹與二叉樹學習總結資料結構二叉樹
- 資料結構與演算法-資料結構(棧)資料結構演算法
- 資料結構與演算法整理總結---雜湊表資料結構演算法
- 資料結構與演算法整理總結---陣列,連結串列資料結構演算法陣列