关于递归和getchar一些疑问~我是新手,谢谢
#include<stdio.h>
void main()
{
int i = 5;
void palin(int n);
printf("40:");
palin(i);
printf("\n");
}
void palin(int n)
{
char next;
if(n<=1)
{
next = getchar();
printf("\n\0:");
putchar(next);
}
else
{
next = getchar();
palin(n-1);
putchar(next);
}
}
本人新手,在练习网上下载的“C语言100道经典题”虽然不知道有没用,但还是认真打算把一百道练到,领会下精华
遇到问题了
重点在自定义函数“palin”的else语句那里。在“next = getchar();”后面是个递归“palin(n-1);”递归后面的语句竟然还会执行。
我的想法是,程序是顺序执行的,在执行到递归用的“palin”函数后不是应该从自定义函数的头开始吗,怎么还会执行palin(n-1)后面的putchar(next),搞不懂,想了很久,我了解了很久关于getchar()的运作方式,但是还是不能解决疑问,求高手解答。
我在简化下问题,就是自定义函数“ palin(n-1);”后面的putchar(next);会被执行,不是这时要从头开始吗?