递归算法——汉诺塔游戏

递归算法的经典游戏,汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。

递归思路,假设共有n(n>1)层,则先把上面的n-1层移动到临时柱子,再把最下面的圆盘移动到目标柱子。再将y上的n-1层移动到目标柱子上,但问题就在于要求一个一个圆盘挪,那么这就要思考上面的n-1个圆盘该如何移动,仔细思考后不难发现,上面n-1个圆盘的移动过程与n层的移动过程完全一致,还是先吧其上面一共n-2层先移动到临时柱子,再把底层的圆盘移动到目标柱子…如此循环,最后都会递"归"到第一层,也就是直接移动圆盘的关键步骤。

代码如下:

def game(n,x,y,z):#把n层从x挪到zif n==1:print(x,"-->",z)else:game(n-1,x,z,y)#把n-1层从x挪到yprint(x,"-->",z)game(n-1,y,x,z)#把n-1层从y挪到z
n = int(input("请输入层数:"))
game(n,'X','Y','Z')

Python 汉诺塔游戏相关推荐

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

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

  2. python汉诺塔游戏_python求解汉诺塔游戏

    本文实例为大家分享了python求解汉诺塔游戏的具体代码,供大家参考,具体内容如下 一.问题定义 百度百科定义:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具.据说大梵天创造世界的时候做了三 ...

  3. python汉诺塔问题输入层数输出整个移动流程_python 实现汉诺塔游戏

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

  4. 汉诺塔游戏的python实现——递归函数

    汉诺塔游戏python实现 def move(n, a, b, c): if n == 1: print('move', a, '-->', c) else: move(n-1, a, c, b ...

  5. Python案例:汉诺塔游戏

    Python案例:汉诺塔游戏 游戏规则: (1)一次只能移动一个环 (2)小环必须在大环之上

  6. 【python】 turtle实现汉诺塔游戏动画过程

    [python] turtle实现汉诺塔游戏动画过程 import turtle class Stack: #面向对象,定义一个类def __init__(self):self.items = []d ...

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

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

  8. 汉诺塔游戏java下载,利用python实现汉诺塔游戏

    本文实例为大家分享了python实现汉诺塔游戏的具体代码,供大家参考,具体内容如下 一.汉诺塔 汉诺塔问题是一个经典的递归问题,对于这个问题,我们可以把它简单的去看成是如何用n-1去表示n. 在A,B ...

  9. python玩汉诺塔游戏攻略

    def hanio(n,x,y,z):'汉诺塔游戏攻略'if n == 1:print('%s-->%s'%(x,z))else:#将n-1个从x放到y上 借助zhanio(n-1,x,z,y) ...

最新文章

  1. Ubuntu 安装 ffmpeg
  2. 毕业使人头秃:发现自己的idea已经被人发表了,该怎么办?
  3. 使用ASP.NET Atlas开发随输入内容自动调整行数的textarea
  4. careercup-C和C++ 13.2
  5. php简单还是go简单_PHP转Golang一些感想
  6. python合并文件_python把多个文件合并到一个新文件
  7. 13.7.深入理解jstack日志
  8. 幻读Java_脏读、幻读、不可重复读和丢失更新
  9. appcrash事件怎么解决_解决问题的最佳办法,是让问题不再是问题
  10. 7-1 ATM机类结构设计(一) (100 分)
  11. micropython是什么意思_MicroPython到底是啥-百度经验
  12. java 启动xms_关于java:启动JVM时-Xms和-Xmx参数是什么?
  13. matlab中求解非线性方程组的函数,利用solve函数求解非线性方程组的问题
  14. Axure rp 9安装包下载地址、汉化文件、授权码(包括下载地址)
  15. Android 呼吸灯流程分析(一)
  16. 使去中心化媒体网络相关联的NFT元数据标准
  17. volatile有序性的真正作用
  18. ics日历 android,哪些日历 App 支持导入 ics 或 webcal 协议订阅?
  19. 知其然也知其所以然,Redis笔记总结:核心原理与应用实践
  20. Python中使用matplotlib画图时各种大小设置

热门文章

  1. 四种方法生成XML文件
  2. 广州高腾化工科技有限公司是家骗子公司!!!
  3. 数字音频总线A2B开发详解二十二:ADAU1701做的功放板的音效(26个例程)(第二部分)
  4. 商业数据分析从入门到入职(9)Python网络数据获取
  5. 想提高面试通过率?回答好这10个问题征服面试官
  6. SSM框架整合_刘锋的博客
  7. DataGrip连接人大金仓数据库(kingbase)详细教程【超详细】
  8. 无人驾驶传感器之超声波
  9. pycharm内安装包下载升级
  10. Linux系统使用 NetworkManager 工具来管理网络