同LS,递规,注意这个*a,给定的字符数组有10项,现在存储了4项,那么第5-10项中*a=0。现在追踪一下这个函数过程,用s[i]来代表你的字符串,这个函数是个自身嵌套函数,先判断*a,第一个值是s[0]=a,这里是串ASCII码,你不用知道是多少,你只用知道它不是0,这样if条件满足(因为不是0,为真),到了fun(a 1),注意这里开始嵌套自身,这时再次到if(a)这里,注意,fun(a 1)参数是a 1,所以这里实际上执行的是if(a 1),s[1]=b,同样不是0,再次嵌套自身,执行fun(a 1),注意这是在累加过一次的基础上加1,所以实际上a 1 1,变成了fun(a 2),然后像前述一样判断通过,到达fun(a 3),接着到达fun(a 4),现在if(*a),a 4的结果是s[4]也就是数组的第五个值,为零,if后面的代码不会执行,这里开始停止重复的递规。执行后面的printf,输出a 4,一个空格(因为是0),这样fun(a 4)结束,但是fun(a 4)嵌套在fun(a 3)之中,fun(a 4)结束,还要执行后面的代码,就是printf,这里输出的是a 3,这样fun(a 3)结束,同样外面还有fun(a 2),fun(a 2)完了还有fun(a 1),fun(a),最后的最后fun(a)才全部结束,每次输出一个,输出的5个字符构成了逆序输出
函数类型不说明的话,是默认为int型的,fun(char a)即是int fun(char a)
楼上说了,递归实现逆序输出,以if('\0')结束递归调用,实现反向输出
递归
完全不晓得你写的是什么。先把格式弄好了,再问