Ka的递归编程练习 Part4|Hanoi汉诺塔,双色汉诺塔的也有
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汉诺塔,双色汉诺塔的也有相关推荐
- 汉诺塔(hanoi)、双色汉诺塔(分离型)、三色汉诺塔
汉诺塔 汉诺塔(Towers of Hanoi)是法国人M.Claus(Lucas)于1883年从泰国带至法国的,河内为越战时北越的首都,即现在的胡志明市:1883年法国数学家Edouard Luca ...
- 双色汉诺塔算法的证明——数学归纳法
数学归纳法 我们先来了解一下数学归纳法(这个我高中的时候数学有选修的,可惜老师没讲,但是我自己还是自学了的) 数学归纳法(Mathematical Induction, MI)是一种数学证明方法,通常 ...
- 飞天开放平台编程指南——阿里云计算的实践(双色)
飞天开放平台编程指南--阿里云计算的实践(双色) 周憬宇,李武军,过敏意编著 ISBN 978-7-121-19699-7 2013年3月出版 定价:59.00元 256页 16开 内容提要 飞天开放 ...
- “双色河内塔”算法(双色汉诺塔)
问题引入 "双色河内塔"由"河内之塔"的规则衍生而来(点击查看),区别在于双色河内塔的目的是将图1所示的圆盘位置,移动成为图2所示的圆盘位置. 图1 图2 问题 ...
- “三色河内塔”算法(三色汉诺塔)
问题引入 "三色河内塔"由"河内之塔"的规则衍生而来(点击查看),区别在于三色河内塔的目的是将图1所示的圆盘位置,移动成为图2所示的圆盘位置."三色河 ...
- 双色Hanoi塔图文详解
双色汉诺塔问题 C++实现 [问题描述] 设A.B.C是3个塔座.开始时,在塔座A上有一叠共n个圆盘,这些圆盘自下而上,由小到大地叠放在一起.各圆盘从小到大的编号为1,2,-,n,奇数号圆盘着红色,偶 ...
- Py:递归求解汉诺塔,简单的几行编程可以搞定很高层的三柱汉诺塔游戏
Py:递归求解汉诺塔,简单的几行编程可以搞定很高层的三柱汉诺塔游戏 目录 输出结果 核心代码 输出结果 核心代码 def hanoi(n,x,y,z):if n==1:print(x,'--→',z) ...
- 用类比方式学习编程中函数递归(个人理解仅供参考)(内含汉诺塔问题的求解)
目录 1.前言 2.递归的数学模型 3.相关的c语法 4.将递归的数学模型写成编程语言 5.利用类比方法将实际问题的代码写成函数递归的形式 例1: 例2: 6.汉诺塔问题的求解 1.前言 本人在学习函 ...
- python递归编程题_Python数据结构与算法41:递归编程练习题4:铺瓷砖
注:本文如涉及到代码,均经过Python 3.7实际运行检验,保证其严谨性. 本文阅读时间约为8分钟. 递归编程练习题4:铺瓷砖 给定一个长度为N的区域,及4种不同长度的瓷砖:灰瓷砖(长为1格).红瓷 ...
最新文章
- 原生JS添加类名 删除类名
- array,vector对象 数组越界检测
- 基于角色-功能-资源的权限控制模型的设计与实现-引子
- 《Effective C#》读书笔记——条目10:使用可选参数减少方法重载的数量C#语言习惯...
- python 流程控制if判断
- leetcode152. 乘积最大子数组
- KubeEdge 实践过程的记录
- 吴征:只为寻找到杨澜
- 多线程、多平台环境中的跟踪 - 使用 log4j 和 UNIX 命令来挖掘跟踪数据
- 动态规划之最长回文串
- acm怎么提交java程序_acm提交java
- The 'manifest_version' key must be present and set to 2 (without quotes)
- ydui倒计时:time_最后的倒计时:部署我的深度学习项目
- 计算混响时间的意义_大盘点:混响时间常用的几种计算公式
- php 验证码不正确,php验证码提示错误
- 在matlab中如何把两个txt文件合并到一起
- 关于电视盒子/XBOX/手机使用kodi访问局域网下的windows电脑文件/电影
- DBMS_SQL的使用
- amis:amis编辑器生成JSON使用方法。
- Visual Studio2005 + Visual SourceSafe 2005 实现团队开发、