针对这个问题 ,做了一个小的测试
将数字前面加个a,b作以区分
#include<stdio.h>
int fun(n)
{
printf("a%d\n", n);
if (n>1)
fun(n - 1);
printf("b%d\n", n);
}
int main()
{
fun(4);
return 0;
}
当执行到fun(n-1)的时候,后面的printf要不要执行呢?
编译器上跑一手
由此不难看出 fun(n-1)直接进入了下一次的递归直到递归结束
然后从里到外依次执行递归语句后面的语句