資料結構與演算法學習總結--遞迴

代品品發表於2020-10-08

定義

特點

去的過程叫遞,回來的過程叫歸

什麼樣的問題可以用遞迴來解決?

同時滿足以下3個條件,就可以用遞迴來解決

  1. 一個問題的解可以分解為幾個問題的解

如果問題A,可以分解為若干子問題B、C、D,則可以假設問題B、C、D已經解決,在此基礎上思考如何解決A。並且只需要考慮問題A和子問題B、C、D之間的關係即可,不需要一層一層往下思考子子問題,遮蔽掉遞迴細節。

  1. 這個問題與分解之後的子問題,除了資料規模不同,求解思路完全一樣
  2. 存在遞迴終止條件

如何編寫遞迴程式碼

寫遞迴程式碼的關鍵是找出遞迴公式和終止條件
找到如何將大問題分解為小問題的規律,並基於此寫出遞推公式,然後再推敲終止條件,最後將遞推公式和終止條件翻譯成程式碼。

遞迴程式碼注意事項

  • 警惕堆疊溢位
  • 警惕重複計算
  • 注意死迴圈遞迴

遞迴程式碼的優缺點

優點:程式碼簡潔
缺點:空間複雜度高、有堆疊溢位的風險、存在重複計算、過多的函式呼叫耗時長等問題
遞迴可以轉化為非遞迴實現,實際開發中,要根據情況來選擇是否使用遞迴方式來實現

相關文章