//先看代码,下面有详细运行过程
void move(int n,int x,int y,int 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);
}
}
main() {
int n;
printf("请输入n的值\n");
scanf("%d",&n);
move(n,'A','B','C');
}
第一层函数:m(3,A,B,C)
进入else m(2,A,C,B)
第二层函数:m(2,A,C,B)
再次进入else m(1,A,B,C)
第三层函数:m(1,A,B,C)
m(1,A,B,C)进入if打印A→C,此层结束
返回第二层
第二层函数:m(2,A,C,B)
else m(1,A,B,C)已经执行完,接着执行下面代码,打印A→B,继续下面代码
m(1,C,A,B)
进入函数,执行if语句,打印C→B
至此,第二层全部运行结束
回到第一层
第一层函数:m(3,A,B,C)
进入else m(2,A,C,B)已经执行完毕
,接着执行下面代码,打印A→C,继续执行下面代码
m(2,B,A,C)
再一次,进入递归
第一层:m(2,B,A,C)
else m(1,B,C,A)
第二层:m(1,B,C,A)
进入if语句,打印B→A,至此第二层结束,回到第一层
第一层:m(2,B,A,C)
else m(1,B,C,A)已经执行完,接着执行下面代码,打印B→C,继续下面代码
m(1,A,B,C)
再次进入函数,进入if语句,执行A→C
至此,整个程序运行结束