一.什么是汉诺塔?

设有 a、b、 c 共 3 根塔座, 在塔座 a上堆叠 n个盘子, 每个盘大小不同, 只允许小盘在大盘之上,最底层的盘最大。

  游戏要求:现在要求将 a上的盘全都移到 c 上,在移的过程中要遵循以下原则:每次只能移动 一个盘;圆盘可以插在 a、b 和 c任一个塔座上;在任何时刻,大盘不能放在小盘的上面。如下图所示

不明白的同学可以在网上搜汉诺塔也有相似的游戏,自己去玩一下有更加深刻的理解和经验。

二.完成汉诺塔游戏的思路和方法

完成汉诺塔这个游戏最重要的是理解递归和游戏的每一步操作动向。

 游戏的基本思路:

实现这种算法的分析:

1,hanoi(n,x,y,z),n表示盘子的数量,x,y,z表示三根柱子,代表将x柱上的n-1个盘子经过y柱后移动到z柱子上。可以先用三个盘子的例子想清楚这个过程,后续的都是以这个方式递归执行下去。

2,mov(x,z),表示x柱子上最上的盘子直接移动到c柱子上,以打印的方式将移动结果展示出来。

三.棋盘覆盖的具体实现代码

#include<stdio.h>
void hanoi(int n,char x,char y,char z);
void mov(char x,char z);
int n;//盘子数量
char a,b,c;//三个柱子
int main(){printf("please input numbers:");scanf("%d",&n);hanoi(n,'a','b','c');return 0;}
void hanoi(int n,char x,char y,char z)
{if(n==1){mov(x,z);}else{hanoi(n-1,x,z,y);//将x柱上面的n-1个盘子经z柱移动到y柱mov(x,z);//将x柱的盘子移动到z柱hanoi(n-1,y,x,z);//将y上的n-1个柱子经过x柱移动到z柱}}
void mov(char x,char z)
{printf("%c -> %c\n",x,z);}

运行结果如图:

具体的详细过程参考:懒猫老师-C语言-汉诺塔问题详解(hanoi)_哔哩哔哩_bilibili

汉诺塔(hanoi)问题(C语言,递归)相关推荐

  1. c语言程序设计电子图书 汉诺塔,用C写的汉诺塔(hanoi)程序

    用C写的汉诺塔(hanoi)程序 分类:计算机等级 | 更新时间:2016-07-07| 来源:转载 #include void movedisc(unsigned n,char fromneedle ...

  2. 汉诺塔(Hanoi)递归算法

    相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏.该游戏是在一块铜板装置上,有三根杆(编号A.B.C),在A杆自下而上.由大到小按顺序放置64个金盘. 游戏的目标:把A杆上的金盘全部移到C杆 ...

  3. 汉诺塔python创新设计_递归经典案例汉诺塔 python实现

    最近在廖雪峰大神的教程学习python 学到递归的时候有个汉诺塔的练习,汉诺塔应该是学习计算机递归算法的经典入门案例了,因此本人以为能够写篇博客来表达一下本身的看法.这markdown编辑器还不怎么会 ...

  4. 【头歌】汉诺塔(Hanoi)的递归算法

    任务描述 本关任务:汉诺塔(Hanoi)的递归算法. 相关知识 相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏.该游戏是在一块铜板装置上,有三根杆(编号A.B.C),在A杆自下而上.由大到 ...

  5. 汉诺塔求次数(用递归)

    Copyright(c)2013,烟台大学计算机学院学生 *All rights reserved. *文件名称:汉诺塔求次数(用递归) *作者:杨飞 *完成日期:2013年11月25日 *版本号:v ...

  6. c语言函数汉诺塔不用move,C语言——汉诺塔问题(函数递归)

    问题概述:古代有一个梵塔,塔内有3个座A,B,C.开始时A座上有64个盘子,盘子大小不等,大的在下,小的在上,有一个老和尚想把64个盘子从A座移动到C座,但是规定每次只允许移动一个盘,且在移动过程中在 ...

  7. c语言汉诺塔实验报告,C语言汉诺塔的简单了解

    汉诺塔详解 以4层为例 以下为我的拙见,还希望大佬雅正 要把汉诺塔移动到c 需要把1,2,3层移到b 把4移动到c 在吧123移动到b 但是一次只能动一块 所以我们目前要做的就是把上面三块移动到b 那 ...

  8. c语言汉诺塔移动次数,C语言计算汉诺塔最小挪动步数 (二)

    C语言计算汉诺塔最小移动步数 (二) 前几天写的:C语言计算汉诺塔最小移动步数(一) 当时还不知道用2^n-1这个公式来求解汉诺塔移动步骤.=_= 偶然间在网上发现了这个公式,发现当时写的算法还是比较 ...

  9. 汉诺塔(hanoi tower)游戏

    问题 递归实现汉诺塔 算法实现 #include <stdio.h> void hanoi( int n, char a, char b, char c) {if( n > 0 ) ...

  10. 汉诺塔(Hanoi)问题归纳总结

    一.汉诺塔问题及其递归算法 1.问题阐述 经典汉诺塔: 外文算法书对汉诺塔问题的描述: 2.算法步骤 三阶汉诺塔问题解题步骤 共需7步. 四阶汉诺塔问题解题步骤 共需15步 五阶汉诺塔问题解题步骤 可 ...

最新文章

  1. 开源中国源码学习笔记
  2. 基本类型和操作之富包装器
  3. redis(一)--简介
  4. python对数的格式_python的log使用详解
  5. SAP Gateway service language determination
  6. leetcode-551-Student Attendance Record I(判断是否出现连续几个相同字符)
  7. 区块链人才缺口明年将达顶峰,核心开发者年入百万很正常
  8. python修改文件linux编码格式,使用python的chardet库获得文件编码并修改编码
  9. 举例让抽象问题具体化:二叉搜索树的后序遍历序列
  10. html 绝对位置居中,如何在div中对绝对定位元素进行居中?
  11. python distance matrix_Python 矩阵转置的几种方法小结
  12. 12月 Web 服务器调查:nginx 增长最快,微软市场份额最高
  13. 苹果CMSv10_全站伪静态规则教程_宝塔Linux系统
  14. latex中极限符号$与$$区别
  15. 2020年android系统版本多少,2020年的Android系统会是什么样?
  16. SpringBoot Banner 图片定制修改
  17. python matplotlib searbon 设置画版颜色 热力图固定颜色等级 固定比例尺寸大小
  18. Qt Windows上实现毛玻璃效果
  19. C语言初学 (两数相加求和)
  20. ELT MTK CallLog流程分析 MO/MT

热门文章

  1. Google Earth Engine (GEE)——利用两种方式进行EVI指数(含函数的两种定义方式)
  2. 【MATLAB第9期】基于MATLAB的xgboost算法安装超详细教学(踩坑避雷指南)暂时仅限于Windows系统 #末尾含源码获取链接
  3. 闪马智能X浙大校友会|发现不凡境界,科技塑造未来
  4. 第55课:60分钟内从零起步驾驭Hive实战学习笔记
  5. php前台源码,PHP房产中介小程序源码8.0.2 后端模块+前台小程序 解密开源版
  6. 数据通信,数据通信原理是什么?
  7. linux系统下,wps缺少windows字体的问题。
  8. 计算机教师个人培训建议,教师个人培训心得
  9. DB2 error 289
  10. U盘中毒之后打不开怎么办