汉诺塔详解(超详细)

时间: 2023-07-18 admin 互联网

汉诺塔详解(超详细)

汉诺塔详解(超详细)

递归算法求汉诺塔(C语言版)
汉诺塔:
梵天创造世界的时候做了三根金刚石柱子,x y z三根柱子
在x柱子上 从上往下按照从小到大顺序摞着64片黄金圆盘。
梵天命令婆罗门把圆盘从x柱移到z柱
并且规定,大圆盘要在小圆盘下面,一次只能移动一个圆盘。
思路:用递归方式求解
第一步:将n-1片圆盘从x借助z移到y
第二步:将第n片圆盘从x移到z
第三步:将n-1片圆盘从y借助x移到z

#include<stdio.h>
//将n张圆盘从x借助y移到z 
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);//将n-1张圆盘从x借助z移到yprintf("%c->%c\n",x,z);//将第n张圆盘从x移到z move(n-1,y,x,z);//将n-1张圆盘从y借助x移到z }
}
int main(){int n;printf("请输入汉诺塔的层数\n");scanf("%d",&n);move(n,'x','y','z');return 0;
} 

若有不足或建议欢迎评论区留言指出!