c語言遞迴問題

時間 2022-07-25 06:55:07

1樓:匿名使用者

0,0,1, 2, 3, 4

傳入5的時候, myfunc中符合if中的遞迴呼叫

執行, 首先內部執行--x, 此時x變為4, 然後內部函式執行myfunc(4),

該函式呼叫完成後輸出4(注意是呼叫完成, 說明前面會有printf輸出)

在呼叫myfunc(4)的時候內部的if又被滿足, 呼叫myfunc(3),

在myfunc(3)呼叫完成後輸出的是3

依次執行, 最後的時候當myfunc的引數是0的時候終止遞迴, 只是做乙個輸出, 然後返回最內層的遞迴, 返回執行上一層的輸出, 因為得到上面的結果 (注意在最後乙個傳入0之前的呼叫就是0, 只是最後乙個0不再呼叫myfunc, 所以只是直接輸出乙個0)

2樓:巢水悅

0 1 2 3 4 5

3樓:智歌闌

輸出如下,注意有兩個0

0,0,1,2,3,4,

分解開的話,執行順序如下

myfunc(5)

printf("%d,",0); //下面的輸出,都是myfun(int x)中執行--x後得到的值

}printf("%d,",1);

}printf("%d,",2);

}printf("%d,",3);

}printf("%d,",4);

}每個數字後輸出乙個逗號

希望對你有幫助哈~~

4樓:今人今事

輸出0,0,1,2,3,4

void myfunc(int x);當x值大於0時輸出x - 1;

(1)、myfunc(5); x > 0 ,呼叫myfunc(--x)即myfunc(4),因為if語句還未執行完所以4並不輸

(2)、myfunc(4);x > 0,呼叫myfunc(--x)即myfunc(3),同樣if語句還未還行玩素以3暫不輸出;

(3)、myfunc(3);x > 0,呼叫myfunc(--x)即myfunc(2),if語句未完,2暫不輸出;

(4)、myfunc(2); x>0,呼叫myfunc(--x)即myfunc(1),if語句未完,1暫不輸出;

(5)、myfunc(1); x > 0,呼叫myfunc(--x)即myfunc(0),

(6)、myfunc(0);x == 0,不執行myfunc(--x),直接輸出0,返回第(5)層輸出0,接著返回第(4)層輸出1,……,依次知道返回第(1)層輸出4。最終我們看到的效果是0,0,1,2,3,4.

千萬不要以為是4,3,2,1,0,0.因為乙個函式的**必須執行完後才會返回。

C語言程式遞迴問題跪求詳細解答

拿乙個等差數列來給你解釋,例如 1 2 3 4 5 100 如果我要計算前5項的和,那麼s5 a1 a2 a3 a4 a5 s5 5 s4 s4 4 s3 s3 3 s2 s2 2 s1 s1 a1 1 根據規律前n項和為 sn n s n 1 且s1 1,根據這兩個條件 我就可以求出任意sn的值,...

c語言用遞迴方法求累加和,C語言 用遞迴方法求累加和

處填fun n i 沒用 此例給出 include int fun int m else int main c語言用遞迴方式求n個數的和 include include using namespace std int add int n int main int add int n 利用add 函式...

C語言求此全排列遞迴演算法解析,C語言如何用遞迴演算法求1 2 3 n

used陣列是全域性變數有隱含初值0 關於全排列的演算法你可以理解為深搜加回溯。include define max 10 int used max 用來標記數字是否已經在前面使用過 int result max 存放結果int n void print 輸出結果void proc int step...