递归函数里return到底有什么作用?删了也能照常运行啊。弹栈时也无返回值,函数返回类型也是void。

voidto_binary(unsignedlongn){intr;r=b%2;if(n>=2)to_binary(n/2);putchar(r==0?'0':'1');... void to_binary(unsigned long n)
{ int r;
r=b%2;
if(n>=2)
to_binary(n/2);
putchar(r==0?'0':'1');
return;
}
展开
 我来答
samismiling
2019-02-24 · 知道合伙人软件行家
samismiling
知道合伙人软件行家
采纳数:1340 获赞数:5604

向TA提问 私信TA
展开全部

类型woid代表“无”,在这个情况下,return是可有可无的,它的目的也不在最后,而是在程序中如果你需要返回,就用得到了。比如

void to_binary( unsigned long n )
{
int r;
r = b % 2;
if ( n >= 2 )
to_binary( n / 2 );
if ( n == 1234567) {
    return; // 比如你如果想在这里加一个退出程序的出口,就用得到了
}
putchar( r == 0 ? '0' : '1' );
return;
}
追问
问题是删了return还成功返回主调main中了。是不是main弹栈时是按照整个main块弹栈?而被调函数有无return都没关系,除非要用到返回值的情况下。
追答
是的
风若远去何人留
2019-02-24 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450134
专业C/C++软件开发

向TA提问 私信TA
展开全部
有return,可以提前结束函数
你这个在函数最后一行,没有意义
可以删掉。
最后一行的return只有在存在返回值的情况下才有实际意义
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b112bee
2019-02-24 · TA获得超过1706个赞
知道小有建树答主
回答量:4244
采纳率:25%
帮助的人:558万
展开全部
你要理解 return的意思,就是结束当前方法,
追问
你把return放递归后面试试,返回到哪??
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
GTA小鸡
高粉答主

2019-02-24 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2.6万
采纳率:78%
帮助的人:1.3亿
展开全部
return在无返回值的函数的最后一行是没用的,也可以省略不写。如果出现在函数中间位置那就有用了。
追问
函数中提前返回我知道,不过在递归函数提前返回就难判断了,递归过程变量太庞大,而且遇到双递归就难知道返回到哪一级调用了🙄
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式