基于VS2019和C解决汉诺塔问题

一、理论知识了解

解决汉诺塔问题理论知识的学习是通过观看哔哩哔哩上的视频方式进行的,视频链接如下:【递归,汉诺塔,最全面的讲解,没有之一】 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.没有直接显示总的步数,暂时没有想出来如何解决,代码仍需改进。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值