该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

关于递归方法我就不费力打了 给你粘一段

[例5.10]Hanoi塔问题

一块板上有三根针,A,B,C。A针上套有64个大小不等的圆盘, 大的在下,小的在上。如图5.4所示。要把这64个圆盘从A针移动C针上,每次只能移动一个圆盘,移动可以借助B针进行。但在任何时候,任何针上的圆盘都必须保持大盘在下,小盘在上。求移动的步骤。

本题算法分析如下,设A上有n个盘子。

如果n=1,则将圆盘从A直接移动到C。

如果n=2,则:

1.将A上的n-1(等于1)个圆盘移到B上;

2.再将A上的一个圆盘移到C上;

3.最后将B上的n-1(等于1)个圆盘移到C上。

如果n=3,则:

A. 将A上的n-1(等于2,令其为n`)个圆盘移到B(借助于C),

步骤如下:

(1)将A上的n`-1(等于1)个圆盘移到C上。

(2)将A上的一个圆盘移到B,

(3)将C上的n`-1(等于1)个圆盘移到B

B. 将A上的一个圆盘移到C,

C. 将B上的n-1(等于2,令其为n`)个圆盘移到C(借助A),

步骤如下:

(1)将B上的n`-1(等于1)个圆盘移到A,

(2)将B上的一个盘子移到C

(3)将A上的n`-1(等于1)个圆盘移到C

到此,完成了三个圆盘的移动过程。

从上面分析可以看出,当n大于等于2时, 移动的过程可分解为

三个步骤:

第一步 把A上的n-1个圆盘移到B上;

第二步 把A上的一个圆盘移到C上;

第三步 把B上的n-1个圆盘移到C上;其中第一步和第三步是类同的。

当n=3时,第一步和第三步又分解为类同的三步,即把n`-1个圆盘从一个针移到另一个针上,这里的n`=n-1。 显然这是一个递归过

程,据此算法可编程如下:

move(int n,int x,int y,int z)

{

if(n==1)

printf("%c-->%c\n",x,z);

else

{

move(n-1,x,z,y);

printf("%c-->%c\n",x,z);

move(n-1,y,x,z);

}

}

main()

{

int h;

printf("\ninput number:\n");

scanf("%d",&h);

printf("the step to moving %2d diskes:\n",h);

move(h,'a','b','c');

}

c语言编文曲星游戏,关于汉诺塔游戏的思路(就是最早文曲星上移盘子的那个)...相关推荐

  1. linux开发汉诺塔游戏程序,汉诺塔游戏终极版

    今天,我完成了汉诺塔游戏终极版.使用一个脚本来输出汉诺塔自动运行的步骤,再通过管道提供给汉诺塔游戏,实现了自动完成汉诺塔. 在去年我用C语言写完汉诺塔游戏时,一直有个未完成的心愿.我希望能让汉诺塔自动 ...

  2. 汉诺塔游戏(java)

    大家好,今天我们来解决一个很有意思的游戏:汉诺塔游戏. 先来带大家了解下这个汉诺塔游戏吧! 汉诺塔由来:法国数学家爱德华·卢卡斯曾编写过一个印度的古老传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一 ...

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

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

  4. c语言 汉诺塔游戏下载,使用C语言解决益智游戏——“汉诺塔”

    说明: 文章所有内容截选自实验楼教程[3个C语言实例带你掌握递归方法论],教程里还有两个实例,感兴趣的可以点击查看: 文章主要是带你通过解决这个游戏来利用递归解决实际问题并掌握其核心思想,懂得如何使用 ...

  5. c#语言编写汉诺塔游戏,c# 实现汉诺塔游戏

    汉诺塔游戏一旦掌握了规律,其实是有点单调和无聊的,不过却是学习递归的一个绝佳例子,想当初学习老谭C的时候,就卡在这儿好长时间. 对初学编程的人来说,递归本身就不易理解,如果使用C语言没有好的调试环境就 ...

  6. 要理解递归,得先理解递归--用Java语言由浅入深讲解汉诺塔游戏

    2019独角兽企业重金招聘Python工程师标准>>> 一.递归是什么? 定义:程序调用自身的编程技巧称为递归.它分为调用阶段和回退阶段,递归的回退顺序是它调用顺序的逆序. 递归使用 ...

  7. CCF NOI1070 汉诺塔游戏

    问题链接:CCF NOI1070 汉诺塔游戏. 时间限制: 1000 ms  空间限制: 262144 KB 题目描述 汉诺塔由编号为1到n大小不同的圆盘和三根柱子a,b,c组成,编号越小盘子越小.开 ...

  8. C语言编程求解圆盘的汉诺塔,课内资源 - 基于80x86汇编的汉诺塔

    一.软件背景介绍 我们今天要陈述的应用叫做汉诺塔,大家可能小时候都接触过类似于鲁班锁,九连环的益智玩具,我们要说的汉诺塔其实也可以说是益智玩具的一种. 下面我们具体介绍一下汉诺塔.汉诺塔有三根杆子A, ...

  9. 基于FPGA的汉诺塔游戏

    汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放 ...

  10. python汉诺塔游戏_Python实战:搭建汉诺塔小游戏,快和小伙伴一起玩玩吧

    汉诺塔游戏:看谁能在短时间内将排好顺序的圈,按同样的顺放在另一根柱子上,每次只能动一个. 今天用python搭建汉诺塔小游戏(简约版) 代码亲测有效!源代码如下: #左中右塔用一个列表存储 left ...

最新文章

  1. 边工作边刷题:70天一遍leetcode: day 97-1
  2. java程序发布成exe等
  3. .net html5页面缓存,详解HTML5中的manifest缓存使用
  4. 进程间的通讯(IPC)方式
  5. 跨站请求伪造CSRF防护方法
  6. Java中大数值是什么?数值想存多大存多大
  7. linux nginx编译安装mysql_Centos7下编译安装配置Nginx+PHP+MySql环境
  8. 东大OJ-Prim算法
  9. 最简单的基于FFmpeg的移动端例子附件:SDL Android HelloWorld
  10. 数据库面试题之PL/SQL面试题
  11. SEO和SEM是什么?又有什么区别?
  12. 以编程方式打印 XPS 文件
  13. 【超超超easy】5分钟:自制酷炫猫咪词云图,会点鼠标即可。
  14. 常用的文件后缀都有哪些?
  15. 移动端H5页面编辑器开发实战--原理结构篇
  16. allergro音乐术语什么意思_音乐术语
  17. 红米手机5 Plus启用root超级权限的步骤
  18. python限制输入字数_iOS 限制输入字数完美解决方案
  19. 程序员节华为这么玩?就说好不好!
  20. 干净彻底的卸载MySQL

热门文章

  1. 高盛:79页区块链报告-《从理论到实践》(附下载)
  2. 元素偏移offset的常用属性
  3. 006Python-Re库入门(正则表达式)
  4. ossfs挂载到本地磁盘
  5. svn创建版本库以及创建其下目录
  6. hdu 2881 Jack's struggle(DP)
  7. python的分隔符_python分隔符
  8. FIRST集合、FOLLOW集合以及LL(1)文法
  9. 免费服务器搭建--个人网站搭建第一步
  10. UPC-5094 - Faulty Robot - 搜索