1樓:gta小雞
這是乙個遞迴函式。主函式中呼叫fun(4, &x),這是第一層遞迴,把這個fun計作fun1;
fun1中n=4,執行else,呼叫fun2(3, &f1),這是第二層遞迴;
fun2中n=3,執行else,呼叫fun3(2, &f2),這是第三層遞迴;
fun3中n=2,執行else,呼叫fun4(1, &f3),這是第三層遞迴;
fun4中n=1,執行if中的*s = n+1即f3=n+1,f3變為2;
fun4執行完畢,回到第三層遞迴fun3中,繼續執行*s=f即f2=f3,f2變為2;
fun3執行完畢,回到第二層遞迴fun2中,繼續執行*s=f即f1=f2,f1變為2;
fun2執行完畢,回到第一層遞迴fun1中,繼續執行*s=f即x=f1,x變為2;
fun1執行完畢,回到主函式中,繼續執行printf("%d\n",x),輸出x=2。
2樓:轟燒
第一次呼叫fun時,n=4, 所以if(n==1)不成立,所以進入了遞迴呼叫中
第二次呼叫fun時,n=3,if(n==1)依然不成立,繼續向下遞迴。
第三次呼叫fun時,n=2,if(n==1)依然不成立,繼續向下遞迴。
第四次呼叫fun時,n=1,if(n==1)成立了,*s = n + 1;最終得到2.
然後就是遞迴返回,把這個結果最終寫入到x的位址裡了。
C語言為什麼輸出的是7 0啊,C語言 7 0,為什麼
字元 hex dec 0 0x00 0 從數值上說上面三個是相等的 0 0x30 48 請lz注意他們的區別 你可以這樣理解strlen 函式的實現 int strlen char str 定義的x是字元型陣列名,但在c語言中字元型變數可以被賦予整形資料,字串裡遇到結束符0 0 就會結束,不管後面是...
c語言輸出格式,c語言輸出格式 s
綠鬱留場暑 c語言輸出格式 s,標識形參佔位。在printf中使用,表示用後面的形參替代的位置,實現動態格式輸出。例如 printf s 10,s 意思是輸出字串s,但至少佔10個位置,不足的在字串s左邊補空格,這裡等同於printf 10s s 擴充套件資料 c語言輸出格式大全 格式佔位符 可以以...
c語言每輸出換行,c語言每輸出5個換行
小夏在深圳 加一個計數的變數,每次找到目標時計數加一,被5整除時換行。源 如下 include int main 擴充套件資料1 printf 函式在碰到 n 時,並沒有直接輸出字元 與字元 n 而是將它們看作一個換行標記,執行了換行操作,以使後面的輸出列印在新的一行。2 printf函式的返回值是...