資料結構與演算法(3) 遞迴與分治思想

2021-10-25 17:33:35 字數 453 閱讀 1281

遞迴思想:

遞迴就是有去(遞去)有回(歸來)。「有去」是指:遞迴問題必須可以分解為若干個規模較小,與原問題形式相同的子問題,這些子問題可以用相同的解題思路來解決,就像鑰匙可以開啟所有門上的鎖一樣;「有回」是指 : 這些問題的演化過程是乙個從大到小,由近及遠的過程,並且會有乙個明確的終點(臨界點),一旦到達了這個臨界點,就不用再往更小、更遠的地方走下去。最後,從這個臨界點開始,原路返回到原點,原問題解決。

遞迴的三大要素

第一要素:明確你這個函式想要幹什麼

對於遞迴,我覺得很重要的乙個事就是,這個函式的功能是什麼,他要完成什麼樣的一件事,而這個,是完全由你自己來定義的。也就是說,我們先不管函式裡面的**什麼,而是要先明白,你這個函式是要用來幹什麼。

例如,我定義了乙個函式:

// 算 n 的階乘(假設n不為0)

intf

(

資料結構和演算法(遞迴和分治思想)

遞迴 乙個直接呼叫自己或通過一系列的呼叫語句間接地呼叫自己的函式,稱作遞迴函式 分治思想 將乙個問題分為幾個小的模組,逐一解決 輸入任意長度的字元,並反向輸出 遞迴 include void print if a int main void 斐波那契數列實現 迭代 遞迴 斐波拉契數列 include...

資料結構演算法 遞迴 分治

該部落格結合leetcode原題介紹了可以使用 分治 思想解決的常見題目。leetcode 50 pow x,n 1 暴力解法 多少次冪,就乘上多少次x。但是提交的話會超時。時間複雜度 o n 空間複雜度 o 1 class solution object defmypow self,x,n typ...

資料結構 分治策略與遞迴(一)

分治策略是將規模比較大的問題可分割成規模較小的相同問題。問題不變,規模變小。這就自然導致遞迴過程的產生。遞迴是指乙個函式能夠直接或者間接的調動自己,就稱之為遞迴函式 自己呼叫自己 分治法所能解決的問題一般具有以下特徵 分治法步驟 比如說求n 這個問題就適合用分治的策略來求解,我們將乙個問題的規模縮小...