因为当用5调用fun()函数时,会一直递归调用fun(a-1);直到a=1时,才会停止递归调用,并开始输出,
本级fun()函数输出后返回上级fun()函数,执行上级调用之亩羡后的代码(键耐槐即打印输出上级的a值),总体流程表现为从小到大打印输出:
a=5;fun(5) --> 稿友
在fun(5)中执行if(5>1)fun(4) -->
在fun(4)中执行if(4>1)fun(3) -->
在fun(3)中执行if(3>1)fun(2) -->
在fun(2)中执行if(2>1)fun(1) -->
在fun(1)中执行printf("1 "), 返回fun(2)-->
在fun(2)中继续执行if后的printf("2 "), 返回fun(3) -->
在fun(3)中继续执行if后的printf("3 "), 返回fun(4)-->
在fun(4)中继续执行if后的printf("4 "), 返回fun(5)-->
在fun(5)中继续执行if后的printf("5 "), 返回main();
如果希望从大到小输出,建议把fun()函数的输出命令放到递归调用之前,即先输出,再减值递归调用,如下:
void fun(int a)
{
printf("%d ",a);
if(a>1)fun(a-1);
}
这是个递归嵌套的程序,会一直递归调用fun函数,直到fun(2)这次调用的时候输出1为止。望采纳
递归程序。你将第6行放到if前面,就可以得到54321了
你把第6句写到第4句前面去看看