递归函数里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;
} 展开
{ int r;
r=b%2;
if(n>=2)
to_binary(n/2);
putchar(r==0?'0':'1');
return;
} 展开
展开全部
类型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都没关系,除非要用到返回值的情况下。
追答
是的
展开全部
有return,可以提前结束函数
你这个在函数最后一行,没有意义
可以删掉。
最后一行的return只有在存在返回值的情况下才有实际意义
你这个在函数最后一行,没有意义
可以删掉。
最后一行的return只有在存在返回值的情况下才有实际意义
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你要理解 return的意思,就是结束当前方法,
追问
你把return放递归后面试试,返回到哪??
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
return在无返回值的函数的最后一行是没用的,也可以省略不写。如果出现在函数中间位置那就有用了。
追问
函数中提前返回我知道,不过在递归函数提前返回就难判断了,递归过程变量太庞大,而且遇到双递归就难知道返回到哪一级调用了🙄
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询