函式的遞迴過程

2021-08-19 02:16:30 字數 1245 閱讀 1522

函式的遞迴就是函式通過自己迴圈呼叫自己來完成某項功能,我們在自定義函式的時候也經常會用到遞迴功能,那麼當函式在進行遞迴的時候內部過程都有哪些呢?

我們以這個程式為例:

age(int n)	

else

tmp=age(n-1)+2

return tmp;

}

函式的遞迴就是函式通過自己迴圈呼叫自己來完成某項功能,我們在自定義函式的時候也經常會用到遞迴功能,那麼當函式在進行遞迴的時候內部過程都有哪些呢?

我們以這個程式為例:

這個程式的遞迴功能主要是後一項為前一項加2,利用

for迴圈也可以很容易的解決,不過我們不看程式內容只看它執行的過程,假使我們讓引數

n=4進入函式,先經過

if的判斷你n!

=1,執行

else

,這時候就會面臨乙個問題:我們並不知道

age(

n-1)的值。於是我們建立乙個棧,先將

age(

4)的值置入棧底,然後繼續求

age(

3)的值,經過相似的過程後,我們可以將

age(3)和

age(

2)按順序置入棧底,完成之後的

n就應該等於

1了,執行

if判斷,終於有了第乙個返回值

10,於是就可以返回

age(

2),將它從棧頂取出並執行後面的語句,得到

age(2)

=12,再取出

age(

3),執行函式得到

age(3)

=14,取出

age(

4),這時候的棧已經為空,我們就也可以將

tmp

返回age(4

)=16

了。具體過程如下圖:

在這個過程中n總共進行了三次遞迴,遞迴的進行次數其實是由遞迴函式的邊界所決定的,這個程式中的函式邊界就是if(

n==1

)return 10

;如果沒有遞迴邊界,函式的遞迴就會一直進行下去,形成乙個死迴圈。

棧的儲存也是遞迴過程中乙個十分重要的過程,它的存在使得我們可以儲存一些臨時變數,同時方便對他們進行取出,不過需要注意的是,棧的大小一般是1mb左右,我們在遞迴的時候也要注意遞迴次數的限定。

遞迴的概念 函式遞迴過程

直接或間接地呼叫自身的演算法稱為遞迴演算法。用函式自身給出定義的函式稱為遞迴函式。使用遞迴技術往往會使 更簡潔,使演算法的描述更清晰且容易理解。例 1 階乘函式 階乘函式遞迴的定義為 當n 0時,n 1,這是這個函式的初始條件,是非遞迴定義的,是此遞迴函式的退出條件。這個遞迴函式在執行時,會不斷的呼...

函式遞迴的呼叫過程

函式遞迴的呼叫過程 當函式n 5時,fact n 1 時要呼叫n 4,所以依次呼叫,上圖所示就是函式的呼叫,當n 0時返回到n 1一直到n 5的函式呼叫 例項解析 字串反轉 將字串s反轉後輸出,s 1 將列表中,從頭到尾以 1的步長輸出,而 1的步長就是指從後往前輸出 函式 分支結構 遞迴鏈條 遞迴...

python遞迴函式的執行過程

舉例 def nove n,a,b,c if n 1 print a,c else nove n 1,a,c,b nove 1,a,b,c nove n 1,b,a,c 執行輸出結果 nove 3,a b c a c a b c b a c b a b c a c 執行過程詳解 1 def nove...