一、理论知识了解
解决汉诺塔问题理论知识的学习是通过观看哔哩哔哩上的视频方式进行的,视频链接如下:【递归,汉诺塔,最全面的讲解,没有之一】 https://www.bilibili.com/video/BV1Hk4y1k7KL/?share_source=copy_web&vd_source=2e89ef79d4fbf810907c020965809c9c
C语言编程入门知识的学习是参考哔哩哔哩上的视频,具体链接如下:【c语言编程 C语言入门 c语言(C语言程序设计教程 c语言视频教程 c语言零基础入门教程 学习c语言 c语言视频教程 c语音 C语言教程 C语言编程项目 C语言】 https://www.bilibili.com/video/BV1q54y1q79w/?share_source=copy_web&vd_source=2e89ef79d4fbf810907c020965809c9c
二、上手编程实现
编程用到C语言中的递归和汉诺塔理论知识。具体代码如下:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void Tower_of_Hanoi(int n,char a1,char a2,char a3)//从a1移动到a3
{
int count = 0;
if (n == 1)
{
printf("从塔%c移到塔%c\n", a1, a3);
}
else if (n == 2)
{
printf("从塔%c移动到塔%c\n",a1,a2);
printf("从塔%c移动到塔%c\n",a1,a3);
printf("从塔%c移动到塔%c\n",a2,a3);
}
else
{
Tower_of_Hanoi(n - 1,a1,a3,a2);//从a1移动到a2
Tower_of_Hanoi(1, a1, a2, a3);//从a1移动到a3
Tower_of_Hanoi(n - 1, a2, a1, a3);//从a2移动到a3
}
}
int main()
{
int n = 0;
char a1= 'A';
char a2 = 'B';
char a3 = 'C';
printf("********汉诺塔游戏***********\n");
printf("***将汉诺塔从塔A移动到塔C**\n");
printf("请输入放在塔A的汉诺塔层数:>");
scanf("%d", &n);
Tower_of_Hanoi(n,a1,a2,a3);
return 0;
}
三、运行结果
![]() |
![]() |
四、存在问题
1.没有直接显示总的步数,暂时没有想出来如何解决,代码仍需改进。