每個高效程序員都應該知道的遞歸高級概念

本文最初發表在 Towards Data Science 博客上,由InfoQ 中文站翻譯並分享。

遞歸是最強大的編程方法之一。它在程序員工具箱中的有用工具清單上名列前茅,能夠以令人震驚的少量代碼解決極其複雜的問題。然而,遞歸通常是一個難以理解的概念,因爲它需要從非標準的角度來看待命令是如何處理的。

本文將從簡單的示例開始,逐步過渡到更具挑戰性的示例,並附有大量圖表:

  • 遞歸的思維方式
  • 遞歸關係
  • 記憶化
  • 分治法策略

遞歸是一種解決問題的方法,其中,函數在函數定義內調用自身。每個遞歸實現都需要有兩個元素:

  • 一個或多個 Base Case(邊界條件、基準條件),它們是終止條件(Terminating Case),在這些條件中,不需要用更多的遞歸來進一步尋找答案。
  • 一組規則(遞歸關係),通過啓動另一輪遞歸,將其他條件減少到一個 Base Case。

例如,讓我們考慮反向打印字符串。輸入 “hello” 的輸出應爲 “olleh”。完成這一任務的貼袋方法是使用 for 循環,並打印出從最後一個索引到第一個索引的每個字符。

遞歸方法將首先創建一個函數 reverseString ,它接受一個字符串作爲參數。如果輸入的長度不爲 0(則將作爲 Base Case 或終止條件),我們將打印最後一個字母,並在當前字符串上啓動另一個 reverseString 示例,但不包括最後一個字符串(因爲它剛剛被打印)。

原文鏈接:【https://www.infoq.cn/article/qDaE14JDP3Da1E9eVhoH】。未經作者許可,禁止轉載。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章