博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ka的递归编程练习 Part4|Hanoi汉诺塔,双色汉诺塔的也有
阅读量:6984 次
发布时间:2019-06-27

本文共 669 字,大约阅读时间需要 2 分钟。

1 #include 
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

你可能感兴趣的文章
Zend Studio 0x80070666错误解决
查看>>
Mac应用程序无法打开或文件损坏的处理方法
查看>>
网址被微信拦截怎么办 微信屏蔽的域名如何正常访问
查看>>
@ModelAttribute运用详解
查看>>
思科交换机VTP配置
查看>>
正则表达式
查看>>
Mysql中使用命令行导入.sql文件新建数据库表(图文)
查看>>
RUBY有感
查看>>
spring 配置多数据源
查看>>
Java 线程数据交换控制器Exchange使用实例
查看>>
IBM X系列服务器IMM日志采集
查看>>
实验三 静态路由、默认路由配置
查看>>
mysql 查看导出数据字典
查看>>
linux命令--cp
查看>>
到底怎么样才叫看书?
查看>>
python 将ipv4的格式转换
查看>>
C语言宏的副作用的简单实例
查看>>
关于C语言结构体对齐的学习
查看>>
富文本框
查看>>
windows下安装rabbitMQ
查看>>