1 #include <stdio.h>
 2 void hanoi(int s,char a,char b,char c)  //a是出发盘,b是中途盘,c是结束盘
 3 {
 4     if(s==0) return;
 5     hanoi(s-1,a,c,b);  //把最底下的从a借助c移动到b
 6     printf("%d from %c move to %c\n",s,a,c);
 7     hanoi(s-1,b,a,c);  //把刚才弄到b的借助a叠到c上
 8 }
 9 int main()
10 {
11     int s=5;   //这里是盘子数,随便改,用scanf也可以
12     char a='A',b='B',c='C';
13     hanoi(s,a,b,c);
14     return 0;
15 }

题目的话搜一下就好啦,到处都有的。

s=0的时候自然终止程序。

分析:

比如一个4阶的汉诺塔

1

2

3

4

a      b      c

第一步:把冰箱门打开

1

2

4           3

a           b            c

第二步:把大象放进去(在这一步输出步骤)

1

2

3           4

a          b          c

第三步:把冰箱门关上

1

2

3

4

a          b           c

然而把冰箱门打开和关上怎么做呢?这就是递归部分中调用自身的部分了。具体见代码吧!

双色的代码也如此,因为实际操作会发现,同种颜色的盘子叠在一起的情况是不存在的,所以代码一样。

转载于:https://www.cnblogs.com/KakagouLT/p/4490707.html

Ka的递归编程练习 Part4|Hanoi汉诺塔,双色汉诺塔的也有相关推荐

  1. 汉诺塔(hanoi)、双色汉诺塔(分离型)、三色汉诺塔

    汉诺塔 汉诺塔(Towers of Hanoi)是法国人M.Claus(Lucas)于1883年从泰国带至法国的,河内为越战时北越的首都,即现在的胡志明市:1883年法国数学家Edouard Luca ...

  2. 双色汉诺塔算法的证明——数学归纳法

    数学归纳法 我们先来了解一下数学归纳法(这个我高中的时候数学有选修的,可惜老师没讲,但是我自己还是自学了的) 数学归纳法(Mathematical Induction, MI)是一种数学证明方法,通常 ...

  3. 飞天开放平台编程指南——阿里云计算的实践(双色)

    飞天开放平台编程指南--阿里云计算的实践(双色) 周憬宇,李武军,过敏意编著 ISBN 978-7-121-19699-7 2013年3月出版 定价:59.00元 256页 16开 内容提要 飞天开放 ...

  4. “双色河内塔”算法(双色汉诺塔)

    问题引入 "双色河内塔"由"河内之塔"的规则衍生而来(点击查看),区别在于双色河内塔的目的是将图1所示的圆盘位置,移动成为图2所示的圆盘位置. 图1 图2 问题 ...

  5. “三色河内塔”算法(三色汉诺塔)

    问题引入 "三色河内塔"由"河内之塔"的规则衍生而来(点击查看),区别在于三色河内塔的目的是将图1所示的圆盘位置,移动成为图2所示的圆盘位置."三色河 ...

  6. 双色Hanoi塔图文详解

    双色汉诺塔问题 C++实现 [问题描述] 设A.B.C是3个塔座.开始时,在塔座A上有一叠共n个圆盘,这些圆盘自下而上,由小到大地叠放在一起.各圆盘从小到大的编号为1,2,-,n,奇数号圆盘着红色,偶 ...

  7. Py:递归求解汉诺塔,简单的几行编程可以搞定很高层的三柱汉诺塔游戏

    Py:递归求解汉诺塔,简单的几行编程可以搞定很高层的三柱汉诺塔游戏 目录 输出结果 核心代码 输出结果 核心代码 def hanoi(n,x,y,z):if n==1:print(x,'--→',z) ...

  8. 用类比方式学习编程中函数递归(个人理解仅供参考)(内含汉诺塔问题的求解)

    目录 1.前言 2.递归的数学模型 3.相关的c语法 4.将递归的数学模型写成编程语言 5.利用类比方法将实际问题的代码写成函数递归的形式 例1: 例2: 6.汉诺塔问题的求解 1.前言 本人在学习函 ...

  9. python递归编程题_Python数据结构与算法41:递归编程练习题4:铺瓷砖

    注:本文如涉及到代码,均经过Python 3.7实际运行检验,保证其严谨性. 本文阅读时间约为8分钟. 递归编程练习题4:铺瓷砖 给定一个长度为N的区域,及4种不同长度的瓷砖:灰瓷砖(长为1格).红瓷 ...

最新文章

  1. 原生JS添加类名 删除类名
  2. array,vector对象 数组越界检测
  3. 基于角色-功能-资源的权限控制模型的设计与实现-引子
  4. 《Effective C#》读书笔记——条目10:使用可选参数减少方法重载的数量C#语言习惯...
  5. python 流程控制if判断
  6. leetcode152. 乘积最大子数组
  7. KubeEdge 实践过程的记录
  8. 吴征:只为寻找到杨澜
  9. 多线程、多平台环境中的跟踪 - 使用 log4j 和 UNIX 命令来挖掘跟踪数据
  10. 动态规划之最长回文串
  11. acm怎么提交java程序_acm提交java
  12. The 'manifest_version' key must be present and set to 2 (without quotes)
  13. ydui倒计时:time_最后的倒计时:部署我的深度学习项目
  14. 计算混响时间的意义_大盘点:混响时间常用的几种计算公式
  15. php 验证码不正确,php验证码提示错误
  16. 在matlab中如何把两个txt文件合并到一起
  17. 关于电视盒子/XBOX/手机使用kodi访问局域网下的windows电脑文件/电影
  18. DBMS_SQL的使用
  19. amis:amis编辑器生成JSON使用方法。
  20. Visual Studio2005 + Visual SourceSafe 2005 实现团队开发、

热门文章

  1. python数据结构与算法总结
  2. 面向对象入门2--继承
  3. 我们试着用FBI的方法破解了一台安卓机
  4. Windows Server2016 安装及配置DFS实现数据复制
  5. python 输出大文本文件
  6. 使用 USB 设备安装 Windows 10虚拟机
  7. Lucene4 入门(2)–Field类及辅助类说明
  8. Log4j日志管理的用法
  9. aws fargate_我如何在AWS Fargate上部署#100DaysOfCloud Twitter Bot
  10. javascript选择器_如何通过选择正确JavaScript选择器来避免沮丧