資料結構與演算法 遞迴的推導和分析

2021-10-06 13:40:56 字數 1109 閱讀 5274

經常會聽到遞迴二字,卻一直不得其法,今天來徹底搞懂它

遞迴就是方法自己呼叫自己,每次呼叫傳入不同的變數,遞迴可以讓**簡潔

舉例分析

寫乙個列印的方法,不停的呼叫自己

執行結果如下

如下圖,

執行main方法,新增第乙個棧幀

第一次呼叫print:傳入引數4,棧中新增第二個棧幀,n=4執行到第7行的時候,if條件成立。那麼,呼叫print(4-1),此時已經開始遞迴(我理解的此時遞迴處於遞的階段,等到print呼叫結束,開始返回的時候就是遞迴的歸的過程)

第二次呼叫print:傳入引數3,棧中新增第三個棧幀,同理if條件成立

第三次呼叫print:傳入引數2,棧中新增第四個棧幀,if條件n>2,不成立,開始執行第10行**,列印

列印完n=2,頂層棧幀退出,繼續執行第二層,此時n=3,(if中呼叫print方法令n=2,但是因為n是區域性變數,並不會影響第二層棧幀中n的值),所以列印出

同理第三層列印出n=4,然後main方法執行完畢,退出最後一層棧幀

上面的遞迴過程中,只有頂層的棧不滿足if條件,執行了第10行的列印方法,然後退出,在頂層的棧的方法執行完畢之前,第二層和第三層的棧此時都才執行到if語句中,並未執行完畢,所以當頂層棧執行完畢之後,就會依次回歸

**如下

main函式

階乘方法

執行結果

資料結構 遞迴 演算法分析

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

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

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

資料結構與演算法 遞迴

一 概念 遞迴是一種高效 簡介的編碼技巧,一種應用很廣泛的演算法,比如dfs深度優先搜尋,前中後序二叉樹遍歷等都是使用遞迴。方法或函式呼叫自身的方式成為遞迴呼叫,呼叫稱為遞,返回成為歸 所有遞迴問題都可以用遞迴公式來表示 二 遞迴優缺點 優點 簡潔 缺點 堆疊溢位風險 可根據調整遞迴呼叫的最大深度來...