#include<stdio.h>
void main()
{
void receiv();
receiv();
}
void receiv()
{
char c;
c = getchar();
putchar(c);
if (c != '!')
receiv();
putchar(c);
}
你如果改成如下代码,那么就输出ABC!CBA了。其中ABC!是顺序输出,CBA是递归倒序输出。但你现在的代码只是在接收到!号后判断递归是否一直进行下去。最后的putchar(c)还是会执行,所以最后的!号还是会被输出
#include<stdio.h>
void main()
{
void receiv();
receiv();
}
void receiv()
{
char c;
c = getchar();
putchar(c);
if (c != '!')
{
receiv();
putchar(c);
}
}
如果输入ABC!的话,应该输出是CBA。
你这是递归啊,倒过来输出,结果是 !BCA,因为接收字符后先处理,然后才判断是否!符号
递归是用的栈,先进后出,所以先收到的会后输出
因为前面有一个putchar(),最后还有一个putchar(),所以输出是对称的,如果输入不是!,就递归输入并输出,所以!前面的字符是顺序的。所以输出是ABC!!CBA
ABC!!CBA