loop、iterate、traversal和recursion這幾個詞是計算機技術書中經常會出現的幾個詞彙。衆所周知,這幾個詞分別翻譯爲:循環、迭代、遍歷和遞歸。乍一看,這幾個詞好像都與重複(repeat)有關,但有的又好像不完全是重複的意思。那麼這幾個詞到底各是什麼含義,有什麼區別和聯繫呢?下面就試着解釋一下。
- 循環(loop),指的是在滿足條件的情況下,重複執行同一段代碼。比如,while語句。
- 迭代(iterate),指的是按照某種順序逐個訪問列表中的每一項。比如,for語句。
- 遍歷(traversal),指的是按照一定的規則訪問樹形結構中的每個節點,而且每個節點都只訪問一次。
- 遞歸(recursion),指的是一個函數不斷調用自身的行爲。比如,以編程方式輸出著名的斐波納契數列。
有了以上定義,這幾個概念之間的區別其實就比較清楚了。至於它們之間的聯繫,嚴格來講,它們似乎都屬於算法的範疇。換句話說,它們只不過是解決問題的不同手段和方式,而本質上則都是計算機編程中達成特定目標的途徑。