无法打印任何内容,即使我们通过字符串s 。
void reverse(char *s)
{
if(*s)
{
return reverse(s+1);
printf("%c",*s);
}
}
作为精确行为,它以相反的顺序打印字符串。
void reverse(char *str)
{
if(*str)
{
reverse(str+1);
printf("%c", *str);
}
}
任何人都知道,程序1会出现什么问题。答案 0 :(得分:2)
这与递归无关。 printf语句是死代码,由于与
相同的原因而无法工作int main()
{
return 0;
printf("hello, world");
}
不起作用。您应该获得此类代码的编译器警告。
此外,您的递归函数需要一个停止调用自身的条件,否则它将无限地生成新函数,直到您获得堆栈溢出。
答案 1 :(得分:0)
在第一个程序中有return语句退出函数而不打印任何东西。也就是说,函数以递归方式调用自身,并在每次递归时立即将控制权返回给调用者。控制从未达到印刷声明。
实际上该功能可以像
一样重写void reverse(char *s)
{
if(*s)
{
return reverse(s+1);
}
}