帮忙看下!该如何处理

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