为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

汪汪一只猫 2021-01-13 14:11:22
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()中。

查看完整回答
反对 回复 2021-03-27
  • 2 回答
  • 0 关注
  • 386 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信