程序如下:

/*                                        递归 汉诺塔问题*/
void move(char x, char y)
{printf("%c->%c\n", x, y);
}
void hanoi(int n, char one, char two, char three)
{if (n == 1)move(one, three);else {hanoi(n - 1, one, three, two);//将one上n-1个盘子通过three放到two上move(one, three);hanoi(n - 1, two, one, three);//将two上n-1个盘子通过one放到three上}
}
int main()
{hanoi(3, 'A', 'B', 'C');return 0;
}

程序执行结果:

A->C
A->B
C->B
A->C
B->A
B->C
A->C

讲解实现过程
特别说明
汉诺塔问题的思想:为了将A上n个盘子放到C上,如果能够实现A上的n-1个盘子放到B上,则A上最大的盘子就能放到C上,然后将B上n-1个盘子再放到C上,那问题就能得到解决,接着就是如何实现这两个步骤:

(A上的n-1个盘子放到B上)步骤1
hanoi(n - 1, one, three, two);//将one上n-1个盘子通过three放到two上
(A上最大的盘子就能放到C上)
move(one, three);
(将B上n-1个盘子再放到C上)步骤2
hanoi(n - 1, two, one, three);//将two上n-1个盘子通过one放到three上

(A上的n-1个盘子放到B上)实现方法:将A上的n-2个盘子放到C上,再将A上的第n-1个盘子放到B上,最后将C上的n-2个盘子放到B上,层层递归,就能实现这个步骤。
以上是以三个盘子为例进行输出,n个盘子实现过程相同,三个盘子执行递归过程如下:
1、hanoi(3, A,B,C) (A=one,B=two,C=three) ->
2、hanoi(2, A,C,B) (A=one,B=three,C=two)实参值改变了导致与上一次实参对应形参值有所不同 ->
3、hanoi(1, A,B,C) (A=one,B=two,C=three)

C语言实现汉诺塔(程序执行步骤详解)相关推荐

  1. 【C语言】汉诺塔问题(图文详解)

    汉诺塔 1. 什么是汉诺塔 2. 有关汉诺塔的有趣故事 3. 利用动画来演示汉诺塔 4. 如何用C语言实现汉诺塔 1. 什么是汉诺塔 源于印度古老传说的益智玩具 汉诺塔(Tower of Hanoi) ...

  2. python汉诺塔递归算法流程图_详解汉诺塔Python递归程序

    学习递归时,很多小伙伴对汉诺塔的递归算法非常疑惑,不清楚那么复杂的移动过程,为何用四五行代码就给解决了.汉诺塔问题:有三根柱子A,B,C.A柱上有若干碟子,每次移动一块碟子,小的只能叠在大的上面,把所 ...

  3. 汉诺塔的递归逐步详解

    文章目录 汉诺塔介绍 递归代码实现 以三个盘子为例逐步详解 汉诺塔介绍 如上图,有三根柱子A,B,C,在A柱子上有N个盘子(图上只画了三个),利用这三根柱子和N个盘子进行汉诺塔游戏,需要最终将A柱子上 ...

  4. 汉诺塔算法 java_汉诺塔算法java实现详解

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public ...

  5. c语言实现汉诺塔(图解)

    c语言实现汉诺塔 一.汉诺塔简介 二.汉诺塔的实现 一.汉诺塔简介 汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根 ...

  6. 汉诺塔怎么加计数次数c语言,C语言计算汉诺塔最小移动步数 (二)

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

  7. 最简单的python语言实现汉诺塔游戏

    最简单的python语言实现汉诺塔游戏 实现代码 def hanoi(n,ch1,ch2,ch3):if n==1:print(ch1, '->', ch3)else:hanoi(n - 1, ...

  8. C语言--实现汉诺塔【图文讲解,附代码】

    目录 (1)什么是汉诺塔 (2)汉诺塔打印步骤 (3)如何用C语言实现汉诺塔 (4)实现代码 (1)什么是汉诺塔   汉诺塔(Tower of Hanoi),又称河内塔.源自印度古老传说的一个游戏,大 ...

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

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

  10. 用C语言实现汉诺塔的移动过程并且统计移动的次数

    用C语言实现汉诺塔的移动过程以及移动的次数 题目说明 一共有三个柱子,在一个柱子上穿有若干个圆盘,这些圆盘按下大上小叠放,将这个柱子上的圆盘按大小顺序重新摆放在另一根柱子上.并且规定,在小圆盘上不能放 ...

最新文章

  1. C#中数据类型转换-隐式转换
  2. 游戏运行时报0xc000007b错的解决办法
  3. 50兆 svg 文件超过_中山兆驰产业园项目开工,预计竣工投产时间为…
  4. C# WINFORM中的combobox.items.add实现像web开发那样,添加显示内容text和实际value值
  5. 【javascript】简单原型链、借用构造函数
  6. Response实现文件下载
  7. 算法:动态规划,最大子数组之和 Maximum Subarray
  8. python字典快速一览
  9. 局域网共享工具_局域网一键共享软件2019最新版
  10. .har 文件解析工具
  11. CSS3淘宝支付成功打勾动画代码
  12. 图片转文字,手机摇身一变就是万能扫描仪!
  13. 注册EXE文件为Windows服务.txt
  14. 神仙打架!清华公布2020特奖候选人名单,有人三篇顶会一作,还有人...
  15. MVP前奏(二)MVC在Android的小短腿
  16. cnn kaggle仙人掌_我如何开发可识别情绪并闯入Kaggle前10名的CNN
  17. 谷歌AI聊天机器人Bard答错问题,股价大跌7.4%;淘宝屏蔽ChatGPT;孟晚舟4月将首次当值华为轮值董事长丨每日大事件...
  18. 软件测试实习生 带人计划 Plan for Training Inten
  19. [C++]auto类型说明符
  20. execute(),executeQuery(),executeUpdate()和executeBatch()的使用与区别

热门文章

  1. “#if 0/#if 1 ... #endif”的作用
  2. win7免费升级win10官方工具
  3. 基于Jackson2的JsonSchema实现java实体类生成json(一)
  4. Java初学者可以实现的简单小程序(建议收藏学习)
  5. oracle crystall ball,Oracle Crystal Ball
  6. 获取spring 框架源码方式
  7. 《Python简明教程》一
  8. Linux0.11+x86 启动流程总结
  9. Java前端技术汇总
  10. mysql 定义游标_mysql 游标的使用