C++输出结果的顺序

来源:百度知道 编辑:UC知道 时间:2024/05/13 09:38:03
#include "stdio.h"
void move(int n,char x,char y,char z)
{
if(n==1)
printf("%c-->%c\n",x,z);
else
{
move(n-1,x,z,y);
printf("%c-->%c\n",x,z);
move(n-1,y,x,z);
}
}
void main()
{
int n;
printf("\ninput n:\n");
scanf("%d",&n);
move(n,'a','b','c');
}

为什么先输出的是a-->c;而不是a-->b?

无论输入的n值是多少,它最先执行的就是n=1的值,即move里面x,z的值,所以先输出ac

递归程序要先找到出口,这里是n==1时是出口,再出此返回解决上一层的问题
复杂问题——>趋向简单——>返回到可解的复杂问题