void p(int x)
{
if(x==1)
{
printf("A");
}
else
{
p(x-1);
printf("%c",'A'+x-1);
p(x-1);
}
}
int main()
{
int n;
scanf("%d",&n);
p(n);
}
为什么当那个进行了几次递归之后,当x变为1时输出了A,马上接下来x就变为了2??为什么会变化呢???
p(x-1);
printf("%c",'A'+x-1);
p(x-1);
因为这里啊,先p了x-1, 再打印 ,后面再p了一个x-1
这个同汉诺塔一样,你研究一下汉诺塔。
因为 p(1) 是由 p(2) 中的 else部分调用的,当 p(1) 执行完,就返回到 p(2),x就变成了2。