資料結構與演算法分析筆記(4) 遞迴

2021-06-27 01:13:20 字數 870 閱讀 8790

簡單來說,遞迴(recursion)就是程式簡單呼叫自身的技巧。乙個過程或

函式在其定義或說明中有直接或間接呼叫自身的一種方法,它通常把乙個大型複雜的問題層層轉化為乙個與原問題相似的規模較小的問題來求解,遞迴策略只需少量的程式就可描述出解題過程所需要的多次重複計算,大大地減少了程式的**量。遞迴的能力在於用有限的

語句來定義物件的

無限集合

。一般來說,遞迴需要有邊界條件、遞迴前進段和遞迴返回段。當邊界條件不滿足時,遞迴前進;當邊界條件滿足時,遞迴返回。

呼叫自身的方法為遞迴方法(recursive method)。這個呼叫就稱為遞迴呼叫(recursive call 或 recursive invocation)。

設計成功遞迴的準則:

1.方法必須被賦予乙個輸入值,通常以實參的形式,有時候也以讀入值的形式;

2.方法的定義必須包括這樣的邏輯,方法必須以這個輸入值作為導致不同情況的引數。這樣的邏輯一般包括乙個if語句或switch語句。

3.其中乙個或多個情況應該具有無需遞迴的解,這些情況為基本情況或終止情況(stopping cases);

4.其中乙個或多個情況必須包含對方法的遞迴呼叫。這些遞迴呼叫在某種意義上應該通過使用「更小」的實參或者解決該方法所要執行的任務的「更小」版本,向某個基本情況前進一步

/**task:從乙個給定的正整數開始倒計數

* @param integer 大於0的整數*/

public static void countdown(int integer)

活動記錄棧:對乙個方法的每次呼叫都會產生乙個活動記錄放進棧裡,該記錄儲存了方法的執行狀態。通常,遞迴方法要比迭代方法用到更多的記憶體,因為每一次遞迴呼叫都會產生乙個活動記錄。

資料結構與演算法分析 學習筆記 (4)

雜湊 hash 雜湊是以常數平均時間執行插入,刪除,查詢的技術 需要元素之間比較,排序的資訊,如查詢最大,最小值等等操作不被hash所支援 雜湊表關鍵的是設計雜湊函式,運算簡單並且在單元之間均勻的分配關鍵字,並減少碰撞 1 分離連線雜湊表的型別宣告 2 ifndef hashsep h34 stru...

資料結構4 遞迴演算法

遞迴演算法 開始不斷的呼叫自己,直到到達遞迴的出口,當到達遞迴的出口之後,最後呼叫的最先返回。做遞迴演算法最重要的是找到出口。就好比棧 開始一直往棧裡面裝入東西,直到抵達出口的時候才開始往外面拿東西。圖示左邊先不斷的呼叫,右邊是從棧頂開始不斷的返回。例項1 求階乘 1 package com.hon...

資料結構 遞迴 演算法分析

使用遞迴的四個法則 基準情形 base case 必須總有某種基準情形,它無須遞迴就能解出.不斷推進 progress 對於那些需要遞迴求解的情形,每一次遞迴呼叫都必須要使求解狀況朝接近基準的情形的方向推進.3.設計法則 假設所有的遞迴呼叫都能執行.4.合成效益法則 在求解乙個問題的同一例項時,切勿...