C语言函数递归问题 求解

为啥我输入12345 会出现54321 (我知道54怎么来的,但不知道321是怎么来的)

最后一行printf("%c\n",next)不是只输出4么?求解

include "stdio.h"

void palin(int n);
main()
{ int i=5;

printf ("\40:");
palin(i);
printf("\n");
}

void palin(n)
// int n;
{ char next;
if(n<=1)
{ next=getchar();
printf("\n\0:");

printf("%c\n",next);

}
else {

next=getchar();
palin(n-1);
printf("%c\n",next);

}
}

这是一个递归函数,每一次执行 palin都是一次递归,等于说这个函数执行了5次,那么printf当然也是执行五次

准确的说是递归和回溯的过程。输入顺序12345-
递归顺序(n=5) next=1...(n=1)next=5,
开始回溯,从最后一次递归开始。printf next(值为5)
直至回溯到递归开始的地方(next=1)。
初学者能不用递归尽量别用。