第三章 遞迴

2021-06-03 17:15:41 字數 749 閱讀 5489

遞迴是一種強大的方法,它允許乙個物件以其自身更小的形式來定義自己。恐怕沒有什麼比觀察神秘的自然界中出現的遞迴現象更好的方法來體會遞迴的重要意義了。想想蕨類植物的葉子,每片葉子的小枝幹都是整片葉子的較小縮影;又或者兩個反光的物體,相互對映對方的漸遠的影像。這樣的例子使我們明白儘管大自然的力量是強大的,在許多方面它那種出乎意料的簡潔更讓我們覺得優美。同樣的道理也可用在遞迴演算法上,從很多方面來說遞迴演算法都是簡潔而優美的,而且還非常強大。

在電腦科學領域,遞迴是通過遞迴函式來實現的。遞迴函式是一種可以呼叫自身的函式。每次成功的呼叫都使得輸入變得更加精細,使我們越來越接近問題的答案。大多數開發者都喜歡將大型的問題分解成一些小型的問題,然後分別編寫不同的函式去處理它們。然而,許多開發者卻並不習慣於用單一函式遞迴的去解決大型的問題。誠然,以這種方式去看待問題需要一定的適應過程。本章**了遞迴是如何工作的並展示了如何以遞迴的方式去定義問題。本書中的一些遞迴方面的例子有樹的遍歷(見第9章),圖中的廣度優先和深度優先查詢(見第11章),以及排序(見第12章)。

本章的內容包括:

基本遞迴

一種強大的方法,允許乙個問題以其自身越來越小的形式來定義自己。在電腦科學領域,我們通過使用遞迴函式來解決帶有遞迴性質的問題,也就是用函式自身呼叫自身。

尾遞迴

遞迴的一種形式,這裡編譯器會為此產生優化過的**。大多數現代的編譯器能夠識別出尾遞迴。為此,只要條件允許我們都應該利用這個特性。

ps:

第三章 遞迴

今天看了演算法 第三章遞迴 寫一下收貨 省著以後忘 遞迴就是不斷的呼叫自己 如果使用迴圈,程式效率會更高,如果使用遞迴,程式可能更容易被理解 遞迴的基線條件和遞迴條件 1.遞迴條件 自己呼叫自己 2.基線條件 如何讓自己停下來 push eitem 元素入棧 push方法 元素入棧 public e...

第三章 遞迴與分治策略

程式直接或間接呼叫自身的程式設計技巧稱為遞迴演算法。它通常把乙個大型複雜的問題層層轉化為乙個與原問題相似的規模較小的問題來求解,遞迴策略只需少量的程式就可描述出解題過程所需要的多次重複計算,大大地減少了程式的 量。遞迴演算法解題的執行效率較低。在遞迴呼叫過程中,系統為每一層的返回點 區域性變數等開闢...

第三章 堆疊

1.基礎知識 堆疊可以實現很多的應用,遞迴的問題轉化成非遞迴形式,在本質上也是堆疊的問題.它是一種 filo 操作的資料結構,一般也有兩種儲存方式 陣列跟鍊錶實現形式,這裡我給出了鍊錶形式的堆疊模板,裡面包括了基本的堆疊所有的操作,還有兩個比較著名的應用例子,時間倉促,精力比較有限,關於迷宮老鼠還沒...