void fun(char *a){if(*a){fun(a+1);printf("%c",*a);}}main(){char s[10]="abcd";fun(s);printf("\n");}请问void fun(char *a)当中的两条语句是如何运行的(我对递归法比较糊涂)。
2 回答
浮云间
TA贡献1829条经验 获得超4个赞
首递归,s数组的地址被传入,首先判断地址指向的空间是否为空,在abcd的情况下,不为空,所以会反复递归调用自己4次,每次地址都+1,也就是指向下一个字母。(注意printf()一直没有执行,它只是把*a压入堆栈中,暂存起来)
当超过d时,内容为空,if不成立,此时,函数开始返回。返回时遇到的第一条语句是printf,第一次返回输出d,再次返回,输出c,依此类推,到a结束,整个函数都返回完成,回到main()中。
添加回答
举报
0/150
提交
取消