这个程序分为了两部分:{ int a=5;fun(a);printf("\n");}这是第一部分:主函数,目的是将a=5带入功能函数fun()中第二部分为:fun(int k){if(k>0)fun(k-1);printf("%d",k);}在主函数里fun(a);则将5带入了第二部分里,即此时k的值为5,那么看if(k>0,只有k是大于0的,就会执行fun(k-1);相当于一层套一层在k=5,里面再放一层执行k-1=4,再在k=4里面放一层。当k=0是,就不需要在套入函数fun(k-1),此时k=5的情况在最外面,k=0的情况在最里面。程序运行从里面往外依次运行,于是输出是倒的,即为012345为此我还进行了检验,证明我说的结论正确:还有问题吗,谢谢采纳,Thanks♪(・ω・)ノ