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);

}
}

2个回答

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

qq_36693404
Met.Joe 别误解回溯,我说的回溯是我对递归树的个人理解。还有一种专门的算法思想叫做回溯。算法中的回溯和这个不是一个概念
大约 3 年之前 回复

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问