问题:
Hanoi(汉诺)塔问题。古代有一个梵塔,塔内有3个座A,B,C。开始时A座上有64个盘子,盘子大小不等,大的在下,小的在
上。有一个老和尚想把这64个盘子从A座移到C座,但规定每次只允许移动一个盘,且在移动过程中在3个座上都始终保持大盘在下,小盘在上。在移动过程中可以利用B座。要求编程序输出移动盘子的步骤

核心:
在于理解,需要针对两个目标对象,进行递归。
A将64个盘子,移动到C。此时,把A看作是递归对象。需要将63个盘子,移动到B,将最后一个大盘,移动到C。
B将63个盘子,移动到C。此时,吧B看作是递归对象。需要将62个盘子,移动到A,将最后一个大盘,移动到C。

代码:
注意:这里汉洛塔,指定的次数为5次。

#include <stdio.h>int total_num = 0;void hanoi(int num, char a, char b, char c);
void move(char a, char b);int main()
{printf("welcome to use hanoi\r\n");hanoi(5, 'A', 'B', 'C');printf("move total num = %d\r\n", total_num);return 0;
}void hanoi(int num, char a, char b, char c)
{if(1 == num){move(a, c);}else{hanoi(num -1, a, c, b);move(a, c);hanoi(num -1, b, a, c);}}void move(char a, char b)
{printf("%c ->  %c\r\n", a, b);total_num++;
}

输出:

[root@localhost test]# ./demo
welcome to use hanoi
A ->  C
A ->  B
C ->  B
A ->  C
B ->  A
B ->  C
A ->  C
A ->  B
C ->  B
C ->  A
B ->  A
C ->  B
A ->  C
A ->  B
C ->  B
A ->  C
B ->  A
B ->  C
A ->  C
B ->  A
C ->  B
C ->  A
B ->  A
B ->  C
A ->  C
A ->  B
C ->  B
A ->  C
B ->  A
B ->  C
A ->  C
move total num = 31
[root@localhost test]#

汉洛塔hanoi递归问题相关推荐

  1. 数据结构与算法—递归算法(从阶乘、斐波那契到汉诺塔的递归图解)

    目录 递归介绍 递归求阶乘 递归求斐波那契 递归解决汉诺塔 总结 递归介绍 递归:就是函数自己调用自己. 子问题须与原始问题为同样的事,或者更为简单: 递归通常可以简单的处理子问题,但是不一定是最好的 ...

  2. labview求n阶乘的和_递归算法(从阶乘、斐波那契到汉诺塔的递归图解)

    递归介绍 递归:就是函数自己调用自己. 子问题须与原始问题为同样的事,或者更为简单: 递归通常可以简单的处理子问题,但是不一定是最好的. 对于递归要分清以下概念: 自己调用自己 递归通常不在意具体操作 ...

  3. 【恋上数据结构】递归(函数调用过程、斐波那契数列、上楼梯、汉诺塔、递归转非递归、尾调用)

    递归(Recursion) 什么是递归? 函数的调用过程(栈空间) 函数的递归调用过程 递归实例分析(1 + 2 + 3 + ... + 100 的和) 递归的基本思想.使用套路 斐波那契数列 fib ...

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

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

  5. 汉诺塔——经典递归问题(c语言实现)

    汉诺塔--经典递归问题(c语言实现) 问题背景 汉诺塔问题是一个经典的问题.汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下 ...

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

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

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

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

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

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

  9. 汉诺塔问题 [递归 + 抽象]

    汉诺塔 前言 一.题意 二.抽象思维 1.源码 三.扩展 1.分析 2.源码 总结 参考文献 前言 汉诺塔问题,是学习递归的第一个算法题,也是非常经典的递归问题.由于它是双递归问题,所以初学时不易理解 ...

  10. 1-算法-hanoi汉诺塔问题- 递归

    汉诺塔问题用递归解决 问题抽象 递归都是从最原始的地方回溯 到解决这个大问题 Void hanoi(int n,char A,char B,char C) {if(n == 1) move(1,A,C ...

最新文章

  1. 著名作者网站论文下载
  2. 大佬告诉你JavaScript面试题大全之基础面试题(附答案)
  3. linux 互斥锁销毁_c-销毁锁定的互斥锁时pthread_mutex_destroy的正...
  4. 在最长的距离二叉树结点
  5. C语言中()和【】的区别?
  6. 学生上课睡觉班主任怎么处理_【师问师答】学生上课说话,点名批评还嘴怎么办?...
  7. congruent matrix
  8. 55个javascript经典用法
  9. 边缘计算工作负载:虚拟机,容器还是裸机?
  10. Matlab美图秀秀
  11. 启动Apache时提示缺少vcruntime140.dll怎么解
  12. 关于如何将SQL2008 R2数据库迁移到SQL2008
  13. 中华酷联发展电商,警惕京东,且行且思考
  14. Visio中字体与Word中字体的对应
  15. 倪光南:友友云计算中间件体现后发优势
  16. 机器学习中的数学基础--特征函数与中心极限定理,统计学基本概念,极大似然估计,最大后验估计
  17. 不错的U3D第一人称射击类游戏教程
  18. android新浪微博改进版
  19. Python中正确显示中文和负号
  20. 游戏日常运营数据:DAU分解及留存

热门文章

  1. html标签中写onclick,HTML a 标签添加 onclick()事件的几种方式
  2. 九爷带你了解 mctop: 监视 Memcache 流量
  3. vue3 去除百度地图右上角地图类型展示
  4. 三重积分的概念,计算(先一后二(投影穿线法))
  5. 华为认证hcip怎么找工作?考取华为认证hcip证书可以做什么?
  6. 各种水龙头拆卸图解_各种水龙头拆卸图解
  7. Linux Ubuntu系统fwknop单包授权认证(SPA)流程
  8. Python读取图像数据的常用方法
  9. FireFox-background
  10. 请假时间计算方式java_java计算两段时间的重复天数