c语言递归调用题,刚刚起步不太懂。

img

c语言读程序题,正确答案是c,为啥输出从0开始啊,会的博主可以教教我吗。


递进的顺序:n = 5  ==> fun(n-1)
        ==> n = 4 ==> fun(n-1)
        ==> n = 3 ==>fun(n-1)
        ==> n = 2 ==> fun(n-1)
        ==> n = 1 ==> fun(n-1)
        ==> n = 0
回归的顺序:
        0 <== printf("%d",n) <== n=0   <==
        1 <== printf("%d",n) <== n = 1 <==
        2 <== printf("%d",n) <== n = 2 <==
        3 <== printf("%d",n) <== n = 3 <==
        4 <== printf("%d",n) <== n = 4 <==
        5 <== printf("%d",n) <== n = 5 <==

它一直递归到0才不继续往下递归,输出然后回去

因为他是先运行fun()再运行printf。你可以将两个调换位置,就会先输出5了