遞迴行為的實質,以及如何分析遞迴行為(重點)

2021-10-24 03:49:57 字數 830 閱讀 4162

遞迴就是自己呼叫自己。

遞迴函式就是 系統在幫忙壓棧,保護現場

舉乙個例子:

題目:如何用遞迴的形式,在整個陣列中 找最大值,即在l到r範圍內找全域性最大值。

思路:分別找到左、右面的最大值,然後比較這兩個值的大小。

主程式:

簡單介紹:先定義了乙個 arr陣列,值為4 3 2 1

然後呼叫getmax函式,引數值為 arr陣列,0,arr陣列長度-1。

getmax函式對應**:

可以看到裡面還是呼叫了getmax函式,

像這種自己呼叫自己的行為,就是遞迴!

綜上,這兩大段** 就是遞迴行為,那麼怎麼理解呢?

執行主過程getmax時,即執行到第10行時

需要把主函式getmax的所有資訊(如,函式執行到第幾行,函式輸入引數,函式執行過程中產生的變數)壓棧儲存。即保護現場 。

子函式getmax執行完畢後,系統自動將主函式的所有資訊還原,即還原現場,

這時主函式getmax繼續執行第11行

剖析遞迴行為實質和遞迴行為時間複雜度的估算

1.遞迴演算法的時間複雜度 master公式的使用 t n a t n b o n d master公式的適用範圍 劃分的子過程規模是一樣的情況下,只是發生了a次,這種情況下才能運用master來求解。1 log b,a d 複雜度為o n log b,a 2 log b,a d 複雜度為 o n ...

剖析遞迴行為和遞迴行為時間複雜度的估算

乙個遞迴行為的例子 master公式的使用 t n a t n b o n d t n 是樣本量為n時的時間複雜度,n b是劃分成子問題的樣本量,子問題發生了a次,後面o n d 是除去呼叫子過程之外的時間複雜度。比如要求乙個陣列的最大值 public static int getmax int a...

剖析遞迴行為和遞迴行為時間複雜度的估算

乙個遞迴行為的例子 master公式的使用 t n a t n b o n d t n 是樣本量為n時的時間複雜度,n b是劃分成子問題的樣本量,子問題發生了a次,後面o n d 是除去呼叫子過程之外的時間複雜度。比如要求乙個陣列的最大值 public static int getmax int a...