遞迴呼叫的原理

2021-09-01 11:19:20 字數 1740 閱讀 2130

遞迴:縮小問題規模,會出現邊界條件,通過返回段回去。

遞迴也就是自己呼叫自己。

例子:age(5):第5個人的年齡 age(4):第4個人的年齡 age(3):第3個人的年齡

age(2):第2個人的年齡 age(1):第1個人的年齡 age(n):第n個人的年齡 ag

age(n-1):第n-1個人的年齡 給出第1個人的年齡為10

**如下:

#includeint age(int n)

int main()

return 0;

}

下圖為**得出的結果(如下圖)

首先**中入棧的方式如下圖,先為n=5先入棧,然後4再入,然後3 2 1 依次入棧。(如下圖)

那按照入棧方式來說我們可能會想它明明是n=5先入的棧,它又怎麼顯示結果的時候顯示的是第乙個人到第5個人的年齡呢?它是怎麼實現轉成按第乙個人到第5個人的順序輸出結果的呢?

往下看,它找第五個人的年齡,沒有找到,就依次找第四個人的年齡(如下圖)

往下繼續,找第四個人的年齡還是沒有找到,然後再繼續找第三個人的年齡(如下圖)

找第三個人的年齡,還是沒有找到,就繼續找第2個人的年齡(如下圖)

找第2個人的年齡,還是沒有找到,繼續往下找第乙個人的年齡(如下圖)

找到第乙個人的年齡的時候終於找到了,原來第乙個人的年齡為10,然後找到第乙個人的年齡後就開始進行下一步了。(如下圖)

找到第乙個人的年齡之後就往回返,先告訴第2個人我的年齡是10,然後你該計算一下你的年齡。然後第乙個人就出棧了。(如下圖)

接著第二個人知道第乙個人的年齡之後就開始計算自己的年齡,原來自己的年齡比第乙個人的年齡大兩歲,然後第二個人就知道自己的年齡為12,然後第2個人就出棧了。(如下圖)

接著第三個人知道第二個人的年齡之後就開始計算自己的年齡,原來自己的年齡比第乙個人的年齡大兩歲,然後第二個人就知道自己的年齡為14,然後第3個人就出棧了。(如下圖)

依次往下為:

最後的結果就是第五個人計算出自己的年齡為18,然後返回到主函式去。輸出的時候按照出棧順序依次輸出。

scala 遞迴函式呼叫原理詳解

分享今天看到的一句話,與大家共勉。先看做了什麼,再看能做什麼,最後才考慮想做什麼。今天在覆盤scala呼叫遞迴函式,下面用一段 來分析一下 問題引入 猴子吃桃子問題 有一堆桃子,猴子第一天吃了其中的一半,並再多吃了乙個!以後每天猴子都吃其中的一半,然後 再多吃乙個。當到第十天時,想再吃時 還沒吃 發...

遞迴的原理

遞迴是經典演算法常用的方法,了解並掌握遞迴可以大大提公升你的程式編寫的能力。1 遞迴的條件 2 最簡單的遞迴 n的階層 3 遞迴的原理 遞迴的條件 遞迴要滿足4個條件 分別是 1函式必須有引數 2函式的引數必須改變,3函式必須呼叫自身,4函式有退出條件。最簡單的遞迴 n的階層 include int...

函式的遞迴呼叫

乙個函式在它的函式體內呼叫它自身稱為遞迴呼叫。這種函式稱為遞迴函式。c語言允許函式的遞迴呼叫。在遞迴呼叫中,主調函式又是被調函式。執行遞迴函式將反覆呼叫其自身。每呼叫一次就進入新的一層。例如有函式f如下 int f int x 這個函式是乙個遞迴函式。但是執行該函式將無休止地呼叫其自身,這當然是不正...