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
递归函数是怎么一层层的返回的? 是这个函数运行到最后一行,再一级级的返回吗??? 展开
图中的递归函数没有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
递归函数是怎么一层层的返回的? 是这个函数运行到最后一行,再一级级的返回吗??? 展开
展开全部
函数中是有返回的,当cur=n的时候,if条件分支中有return。
此时,函数已经递归到最底层,然后再逐层向上返回。
否则,就是cur+1,然后再往下递归。
此时,函数已经递归到最底层,然后再逐层向上返回。
否则,就是cur+1,然后再往下递归。
追问
找错了例子。。。补充了汉诺塔的例子。。没有return
追答
其实hanoi函数中的n是在逐次往下减少,当n=1的时候,程序只会运行move函数,这样不会走到else分支,所以不用添加return语句。
如果只有if分支,没有else分支的话,那就需要在move函数后添加return语句。
你看你第一次贴出来的函数,只有if分支,没有else分支,这样在if分支的末尾要加上return语句。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询