首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

帮忙看下!该如何处理

2012-03-17 
帮忙看下!main(){inti5voidpalin(intn)printf( \40: )palin(i)printf( \n )getch()}voidpalin(

帮忙看下!
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


热点排行