递归函数逆序输出问题

提问 虽然输入了,但是输出不会被fun()给顶了吗?还能输出?



#include<stdio.h>
int main()
{

fun();
}
int fun()
{char s;
 s=getchar();
 
 if(s=='\n')
  return 0;
 fun();
 putchar(s);
}

函数有一点点问题,修改如下,增加了一个fun()的声明,不然main函数调用的时候会报错。

#include<stdio.h>
int fun();
int main()
{
 
fun();
}
int fun()
{char s;
 s=getchar();
 
 if(s=='\n')
  return 0;
 fun();
 putchar(s);
}

由于输入字符串时,最后一个字符总是'\n',由于递归调用是从前向后传递一个个的字符,但遇到‘\n’时,该函数fun()会返回0,进而导致上一级的putchar(s);被执行,从而打印出最后一个字符,依次从后向前分别打印出每个字符。
不知道这样的解释能明白不。

不会,因为递归的时候,每一层都会有一个s,每一层的s变量是独立的


#include<stdio.h>
int fun()
    {char s;
     s=getchar();
     if(s=='\n')
      return 0;
     fun();
     putchar(s);
}
int main()
{
fun();
}