遞迴就是自己呼叫自己。
遞迴函式就是 系統在幫忙壓棧,保護現場
舉乙個例子:
題目:如何用遞迴的形式,在整個陣列中 找最大值,即在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...