資料結構 六

2021-07-10 02:17:26 字數 1720 閱讀 1090

接著遞迴:

遞迴不僅可以自己呼叫別的函式,還可以呼叫自己:

求某個數的階乘,先用迴圈實現:

除了迴圈,遞迴也可以實現:

與迴圈不同,遞迴的思路是已經知道1

的階乘是

1,每次呼叫

f函式,只需知道比它小

1的數階乘,

n只需知道

n-1的階乘,

n-1只需知道

n-2的階乘

...直到

1為止。

同理,n

個數之和:

函式的呼叫:當在乙個函式執行期間呼叫另乙個函式時,在執行被調函式之前,系統需要完成3

件事:

1.將所有的實際引數,返回位址等資訊傳遞給被調函式儲存。

2.為被調函式的區域性變數(也包括形參)分配儲存空間。

3.將控制轉移到被調函式額入口。

從被調函式返回主調函式之前,系統也要完成3件事

1.儲存被調函式的返回結果

2.釋放被調函式的儲存空間(靜態記憶體而已)

3.依照被調函式儲存的返回位址將控制轉移到呼叫函式

不管是函式呼叫本身還是其他函式,實現原理都是壓棧出棧。在系統內部是一樣的。

實現遞迴要滿足3

個條件:

1.遞迴必須得有乙個明確的中止條件。

2.該函式處理的資料規模必須在遞減。

3.這個轉化必須是可解的,不能是死遞迴。

迴圈和遞迴的優缺點:

遞迴:易於理解

速度慢儲存空間大

迴圈:不易理解

速度快儲存空間小

遞迴專題:漢諾塔演算法:

遞迴的應用:樹和森林是以遞迴的形式實現的

樹和圖的很多演算法也是基於遞迴實現的

很多數學公式是以遞迴方式定義的,比如:菲波拉契序列

總結:記憶體的分配是一維線性的,而現實生活的問題是複雜多樣的,把複雜的問題轉化為簡單的儲存就是資料結構

邏輯結構:人的思維

線性:陣列

鍊錶棧和佇列是特殊的線性結構

非線性:樹

圖物理結構:計算機的思維

下面開始非線性結構:

樹:樹定義

專業定義:1.

有且只有乙個稱為根的結點

2.有若干個互不相交的子樹,這些樹本身也是一棵樹

通俗的定義:

1.樹由結點和邊組成

2.每個結點只有乙個父結點,但可以有多個子結點

3.有乙個結點例外,該結點沒有父結點,此結點稱為跟結點

樹分類樹操作樹應用

資料結構 六 樹

一直對樹的概念比較模糊,什麼紅黑樹啊,二叉搜尋樹等很多沒有乙個完整的知識體系結構,所以今天準備花一天的時間做乙個總結,力求搞明白樹的全部知識,不同樹之間的體系結構,以及一些常見應用。樹的定義有兩種方式。樹 tree 是包含n n 0 個結點的有窮集,其中 樹也可以這樣定義 樹是由根結點和若干顆子樹構...

資料結構 六 樹

未完待續 樹的概念 子樹 根結點 內部結點 葉結點或終端結點 深度或高度 根為第一層,根的孩子為第二層,依次類推,樹中結點最大的層數就稱為深度或高度。在樹中,如果任意乙個結點的子樹,從左到右都是有次序的,那麼這棵樹被稱為有序樹,反之則為無序樹。森林 由多棵不相交的樹的集合。樹的儲存結構 雙親表示法 ...

資料結構(六) 堆

二叉堆是基於完全二叉樹的 所謂完全二叉樹,就是每層的資料按照從左到右的方式儲存,即按照層序遍歷的順序儲存 每個節點都大於它的左孩子和右孩子,根節點為樹中最大的節點的堆為最大堆 相應的,每個節點都小於其左孩子和右孩子,根節點為最小節點的堆為最小堆 但是左右孩子的大小關係是不一定的 很顯然,堆的實現可以...