永发信息网

C语言递归函数,实现字符串逆序输出,代码如下,想不通运行过程和原理,求解释

答案:2  悬赏:10  手机版
解决时间 2021-03-24 00:16
  • 提问者网友:了了无期
  • 2021-03-23 18:01
#include
#include
void reverse()
{
char c;
if ((c = getchar()) != '\n')
reverse();
if (c != '\n')
putchar(c);

}
main()
{
reverse();
system("pause");
return 0;
最佳答案
  • 五星知识达人网友:西风乍起
  • 2021-03-23 18:29
#includevoidf(){charch;if((ch=getchar())!='\n')f();if(ch!='\n')printf("%c",ch);//这个输出语句是写在了递归调用之后,会被压栈,先压栈的后输出,所以可以实现逆序输出,如果把这个语句移动到f();就不会压栈了}voidmain(){f();pri
全部回答
  • 1楼网友:猎心人
  • 2021-03-23 18:37
函数用的是系统栈,栈的特点是先进后出 假设 str = "abcde"; 递归函数当未达到末尾的'\0'时,就调用下一个字符的打印函数(这些就逐一保存在栈中,最先遍历到的在最底下,先遍历的总是在后遍历的下边) 到了str[i] == '\0' 的时候,不符合递归条件,就出栈,其实栈内保存的是print()函数和每个字符的地址,你可以想象一下,出栈的时候,从上到下,应该是"e d c b a"是吧,这样依次打印,顺序就自然而然逆序了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯