遞迴中關於遞迴語句後面內容的執行

2022-06-04 02:30:11 字數 1037 閱讀 6582

遞迴函式中,位於遞迴呼叫語句後的語句的執行順序和各個被呼叫函式的順序相反;

下面看乙個經典的例子:

#include

void up_and_down(int); 

int main(void) 

void up_and_down(int n) 

輸出結果

level 1:n location 0240ff48

level 2:n location 0240ff28

level 3:n location 0240ff08

level 4:n location 0240fee8

level 4:n location 0240fee8

level 3:n location 0240ff08

level 2:n location 0240ff28

level 1:n location 0240ff48

首先, main() 使用引數 1 呼叫了函式 up_and_down() ,於是 up_and_down() 中形式引數 n 的值是 1, 故列印語句 #1 輸出了 level1 。然後,由於 n 的數值小於 4 ,所以 up_and_down() (第 1 級)使用引數 n+1 即數值 2 呼叫了 up_and_down()( 第 2 級 ). 使得 n 在第 2級呼叫中被賦值 2, 列印語句 #1 輸出的是 level2 。與之類似,下面的兩次呼叫分別列印出 level3 和 level4 。

當開始執行第 4 級呼叫時, n 的值是 4 ,因此 if 語句的條件不滿足。這時候不再繼續呼叫 up_and_down() 函式。第 4 級呼叫接著執行列印語句 #2 ,即輸出 level4 ,因為 n 的值是 4 。現在函式需要執行 return 語句,此時第 4 級呼叫結束,把控制權返回給該函式的呼叫函式,也就是第 3 級呼叫函式。第 3 級呼叫函式中前乙個執行過的語句是在 if 語句中進行第 4 級呼叫。因此,它繼續執行其後繼**,即執行列印語句 #2 ,這將會輸出 level3 .當第 3 級呼叫結束後,第 2 級呼叫函式開始繼續執行,即輸出level2 .依次類推.

關於Python 函式遞迴中的 sin之舞

最近fj為他的奶牛們開設了數學分析課,fj知道若要學好這門課,必須有乙個好的三角函式基本功。所以他準備和奶牛們做乙個 sine之舞 的遊戲,寓教於樂,提高奶牛們的計算能力。不妨設 an sin 1 sin 2 sin 3 sin 4 sin n sn a1 n a2 n 1 a3 2 an 1 fj...

c 遞迴中語句的執行順序是怎樣的?

void recurs 分析 這裡用分層思想更便於理解,首先執行statement1語句,然後判斷是否符合test條件,如果符合,進入下一層recurs 呼叫,直到判斷不符合條件為止 到這裡為止,我們下面的statement2語句一次也沒有被執行 然後這裡執行最底層的statement2語句,並將程...

python在遞迴中的坑

用python寫遞迴方法解決八皇后問題時,出現了很多問題 遞迴中的return只會退出當前呼叫的函式f tf t ft 如果僅在f tf t ft 中return了,那麼程式不會直接退出整個遞迴呼叫,而是返回到上乙個呼叫函式ft 1f ft 1 繼續執行ft 1f ft 1 中沒有執行完的部分,所以...