C语言里,图中的递归函数没有return,函数调用时怎么返回的?函数运行到最后就会返回吗

如例子图中的递归函数没有return递归函数是怎么一层层的返回的?是这个subset函数运行到最下一行,再一级级的返回吗???上面的例子错了(有return)。。。这个例... 如例子
图中的递归函数没有return
递归函数是怎么一层层的返回的? 是这个subset函数运行到最下一行,再一级级的返回吗???
上面的例子错了(有return)。。。
这个例子。。
void hanoi(int n,char one ,char two,char three)
{
void move(char x,char y);//声明打印函数
if(n==1)
move(one,three); //打印A->C
else
{
hanoi(n-1,one,three,two);
move(one,three)
hanoi(n-1,two,one,three);
}
}
没有return
递归函数是怎么一层层的返回的? 是这个函数运行到最后一行,再一级级的返回吗???
展开
 我来答
yanglei5658
2015-04-19 · TA获得超过4756个赞
知道大有可为答主
回答量:835
采纳率:100%
帮助的人:532万
展开全部
函数中是有返回的,当cur=n的时候,if条件分支中有return。
此时,函数已经递归到最底层,然后再逐层向上返回。
否则,就是cur+1,然后再往下递归。
追问
找错了例子。。。补充了汉诺塔的例子。。没有return
追答
其实hanoi函数中的n是在逐次往下减少,当n=1的时候,程序只会运行move函数,这样不会走到else分支,所以不用添加return语句。
如果只有if分支,没有else分支的话,那就需要在move函数后添加return语句。

你看你第一次贴出来的函数,只有if分支,没有else分支,这样在if分支的末尾要加上return语句。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式