猿问

c语言中fun()函数递归?

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)当中的两条语句是如何运行的(我对递归法比较糊涂)。

汪汪一只猫
浏览 387回答 2
2回答

浮云间

首递归,s数组的地址被传入,首先判断地址指向的空间是否为空,在abcd的情况下,不为空,所以会反复递归调用自己4次,每次地址都+1,也就是指向下一个字母。(注意printf()一直没有执行,它只是把*a压入堆栈中,暂存起来)当超过d时,内容为空,if不成立,此时,函数开始返回。返回时遇到的第一条语句是printf,第一次返回输出d,再次返回,输出c,依此类推,到a结束,整个函数都返回完成,回到main()中。
随时随地看视频慕课网APP
我要回答