C语言实现代码
#include <stdio.h>
void hanoi(int,char,char,char);
void move(char,char);
# 主函数
int main(){
int n;
printf("输入汉诺塔的层数:");
scanf("%d",&n);
hanoi(n,'A','B','C');
return 0;
}
# 算法核心
void hanoi(int n,char x,char y,char z){
if(n==1){
move(x,z);
}else{
hanoi(n-1,x,z,y);
move(x,z);
hanoi(n-1,y,x,z);
}
}
# 每移动一次盘子,打印输出
void move(char c1,char c2){
printf("%c -> %c\n",c1,c2);
}
伪代码
设圆盘层数为n,三个柱子分别是A,B,C
hanoi(n,A,B,C){
# 递归出口
if(n==1)
then{
#把当前递归程序的A移动到C
print(A->C)}
else{
# 进入递归
hanoi(n-1,A,C,B)
#把当前递归程序的A移动到C
print(A->C)
# 进入递归
hanoi(n-1,B,A,C)
}
}
这里只提供程序和伪代码供参考,如需要深入学习请移步b站懒猫老师汉诺塔讲解课程 https://www.bilibili.com/video/BV1jJ411a7AS?from=search&seid=17137012162727978593