[問題] 基本遞迴想不通
1 #include<stdio.h>
2 void test(int);
3 int main(void)
4 {
5 test(1);
6 return 0;
7 }
8
9 void test(int a)
10 {
11 printf("%d ",a);
12 if (a<4)
13 test(n+1);
14 printf("%d ",a); //#2
15 }
輸出結果是 1 2 3 4 4 3 2 1
我懂 1 2 3 4 4,但後面 3 2 1怎麼來的,書上寫的我看不太懂
它說到第2個4輸出後,程式會執行return,控制權會回到呼叫它的函數,也就是第3層呼叫
而第3層之前所執行的敘述是在if裡呼叫第4層,此時第3層會繼續從下一個敘述開始
也就是#2,所以第3層會被輸出(印出3),結束後又回到第2層,以此類推
第2個4輸出後,程式會執行return? 可是return不就是已經結束了嗎?
還是這個return指的是不是main裡面的? 為何控制權會回到呼叫它的函數呢?
想不透啊~新手來請教一下~謝謝各位!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 36.226.51.212
→
09/30 00:53, , 1F
09/30 00:53, 1F
→
09/30 00:54, , 2F
09/30 00:54, 2F
→
09/30 00:54, , 3F
09/30 00:54, 3F
→
09/30 00:55, , 4F
09/30 00:55, 4F
→
09/30 08:38, , 5F
09/30 08:38, 5F
→
09/30 08:39, , 6F
09/30 08:39, 6F
→
09/30 09:12, , 7F
09/30 09:12, 7F
→
09/30 09:56, , 8F
09/30 09:56, 8F
推
10/01 16:51, , 9F
10/01 16:51, 9F
推
10/04 11:49, , 10F
10/04 11:49, 10F
→
10/04 11:50, , 11F
10/04 11:50, 11F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章