读书人

帮忙看下!该如何处理

发布时间: 2012-03-17 19:06:28 作者: rapoo

帮忙看下!
main()
{
int i=5;
void palin(int n);
printf( "\40: ");
palin(i);
printf( "\n ");
getch();
}
void palin(n)
int n;
{
char next;
if(n <=1)
{
next=getchar();
printf( "\n\0: ");
putchar(next);
}
else
{
next=getchar();
palin(n-1);
putchar(next);
}
}
函数递归调用,输入字符 "asdfg ",输出 "gfdsa "把字符反向输出是在程序中那里完成的?我看不出来

[解决办法]
关键是
next=getchar();//1
palin(n-1); //2
putchar(next); //3


输入字符 "asdfg ",输出 "gfdsa "

//1的地方,接受输入,a-> s-> d-> f-> g
这是递归调用palin(n-1)了,即//1-> //2-> //1-> //2-> //1-> //2。。。

输出的时候,是递归的putchar//3,
递归退栈,完成输出 g-> f-> d-> s-> a


读书人网 >C语言

热点推荐