【解决思路】
以3个塔柱为例
铁柱x 铁柱y 铁柱z 总共64个盘子
我们把所有的呃思路聚集为以下两个问题:
问题1: 将X上的63个盘子借助z移动到y上
问题2: 将Y上的63个盘子接住X移动到Z上
然后用这个方法递归—————-
问题1的圆盘移动步骤为
–先将前62个盘子移动到z上,确保大盘在小盘下。
–再将最底下的第63歌盘子移动到y上。
–最后将z上的62个盘子移动到Y上
问题2的圆盘的移动步骤为:
–先将前62个盘子移动到z上,确保大盘在小盘下。
–再将最底下的第63歌盘子移动到y上。
–最后将z上的62个盘子移动到Y上
————————————————————————————————————————————————————————————————————
【代码-C语言】
#include <stdio.h>
//参数:n移动动的个数 xyz分别代表三个铁柱
void moveDish(int n,char x,char y,char z){
if(1==n){
printf("%c---->%c\n",x,z);
}else{
moveDish(n-1, x, z, y); //将n-1个盘子借助z从x移动到y上
printf("%c---->%c\n",x,z); //将第n个盘子移动到z上
moveDish(n-1, y, x, z); //将n-1个盘子借助x从y移动到z上
}
}
int main(){
int n ;
printf("请输入汉诺塔的层数");
scanf("%d",&n);
moveDish(n, 'X', 'Y', 'Z');
return 0;
}