【发布时间】:2014-11-26 15:51:43
【问题描述】:
程序1:
无法打印任何内容,即使我们传递了 string s。
void reverse(char *s)
{
if(*s)
{
return reverse(s+1);
printf("%c",*s);
}
}
程序2:
作为精确的行为,它以相反的顺序打印字符串。
void reverse(char *str)
{
if(*str)
{
reverse(str+1);
printf("%c", *str);
}
}
有人知道吗,程序 1 会出现什么问题。
我认为,在递归函数中,我们应该在函数之前放置 return 语句。是不是一定要放return statement/necessary??.
【问题讨论】:
-
在您的第一个程序中,您在打印之前返回。
-
这称为“无法访问的代码”。每个现代编译器都会对此类代码发出警告。
-
除了无法访问的代码之外,您的函数还声明了
voidreturn,因此它无论如何都无法返回值。 -
你明白打印一个值和从一个函数返回一个值是两件完全不同的事情吗?
-
我认为问题更多:你明白
return语句在那个时候立即退出函数吗?