python递归算法 - 汉诺塔问题

经典汉诺塔问题:
有三根柱子a,b,c,在一根柱子a上,从下往上按照从大到小的顺序摞着64片黄金圆盘。把所有圆盘从下往上按从大到小的顺序重新摆放在另一根柱子c上。并且规定,小圆盘只能放在大圆盘上,在三根柱子之间每次只能移动一个圆盘。
问:
移动完所有圆盘从a到c,需要移动多少次,设计程序记录移动的步骤

图例3.8:以三个圆盘为例,实现递归

算法实现步骤:
(最下面的一个盘子记为N,上面的所有盘子记为N-1,看做一个整体)

N个盘子时
1.把N-1个盘子从A经过C移动到B

hannoi(N-1,A,C,B)

2.把第N个圆盘从A移动到C

print("moving from %s to %s" % (a, c))

3.把N-1个盘子从B经过A移动到C

hannoi(N-1,B,A,C)

完整代码如下:

def hanoi(n, a, b, c):#定义一个汉诺函数,n个盘子,a,b,c三根柱子if n > 1:#圆盘数大于1时hanoi(n - 1, a, c, b)#自调用函数,把N-1个盘子从A经过C移动到Bprint("moving from %s to %s" % (a, c))#把第N个圆盘从A移动到Chanoi(n - 1, b, a, c)#自调用函数,把N-1个盘子从B经过A移动到C

测试:5个盘子

hanoi(5, "a", "b", "c")

输出结果:

python递归算法 - 汉诺塔问题相关推荐

  1. python汉诺塔递归算法流程图,python实现汉诺塔递归算法经典案例

    Python汉诺塔递归问题 python请用递归算法编程解决汉诺塔问题 在线等 关于python递归函数实现汉诺塔 def move(n,a,b,c): #1 if n==1: #2 print(a, ...

  2. 使用Python查看汉诺塔移动详细过程

    汉诺塔属于比较经典的问题,详见以前的文章Python模拟汉诺塔问题移动盘子的过程,基于非递归算法的汉诺塔游戏之Python实现. 本文代码功能:模拟移动汉诺塔上的盘子,并实时显示3根柱子上盘子的情况. ...

  3. 用 python 解决汉诺塔问题并附带演示过程

    用 python 解决汉诺塔问题并附带演示过程 参考文章: (1)用 python 解决汉诺塔问题并附带演示过程 (2)https://www.cnblogs.com/shinawear/p/1061 ...

  4. python 游戏 —— 汉诺塔(Hanoita)

    python 游戏 -- 汉诺塔(Hanoita) 一.汉诺塔问题 1. 问题来源 问题源于印度的一个古老传说,大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆 ...

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

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

  6. python堆栈汉诺塔非递归_汉诺塔问题的递归解法和非递归解法(python语言实现)...

    汉诺塔问题的非递归解法(python语言类解法) #!/usr/bin/env python #coding:utf-8 import sys import time reload(sys) sys. ...

  7. C语言递归算法——汉诺塔问题(河内塔)

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

  8. 如何用python写汉诺塔游戏的辅助

    今天我来分享如何用python写一个游戏的辅助 大游戏的外挂我们写不了但是我们可以写个小游戏–汉诺塔 的外挂,这个游戏相信很多同学都玩过. 开始是三层,还很简单,四层还好,五层六层就有点费脑壳了. 话 ...

  9. Python实现汉诺塔代码

    def hanoi(n,x,y,z):if n == 1:print(x,'-->',c)else:hanoi(n-1,x,z,y) #将前n-个盘子从x移动到y上hanoi(1,x,y,z) ...

最新文章

  1. 安卓 画板 学习笔记
  2. Aggregation,Composition和Dependency
  3. 把整数转换成2的n次方的和数组
  4. android-XML解析Dom,Sax,Pull
  5. pycharm 使用教程
  6. Django-Celery异步发送激活邮件,以及注意点
  7. iOS compare 字符串比较
  8. QT5开发及实例学习之十二Qt5图像坐标变换
  9. 服务器怎么操作系统版本,服务器怎么操作系统版本
  10. 生成交叉表的简单通用存储过程
  11. Eclipse中,lombok安装
  12. java中获取链表的第一个节点,两个链表中的第一个公共节点(java)
  13. 第一篇论文:改进TCP及UDP的性能分析及比较
  14. 在 Delphi 下使用 DirectSound (1): 枚举播放设备
  15. Groovy入门教程
  16. 人工智能核心能力包括哪些层面?
  17. 【NVIDIA】Win10 + CUDA10 + cuDNN 安装教程
  18. 初探三维计算机视觉(三维重建) —— 相机模型 + 双目系统 + 点云模型
  19. 视觉slam直接法,特征点法
  20. html页面中艺术字,html 生成艺术字

热门文章

  1. EntityFramework之领域驱动设计实践(五)
  2. vue3查看当前路由
  3. 播放网易云音乐时,有电话呼入,音乐并不会停止播放。
  4. oracle报错解决
  5. 解决华擎J3455主板DSM兼容性问题
  6. RadioButton设置默认选中后无法取消,可选中多个的问题
  7. java 工作流 jbpm,J2EE工作流管理系统jBPM详解(一)(4)
  8. Java课程大作业设计:实现联网对战、实时聊天、多线程编程的五子棋项目
  9. 02_Pulsar的集群架构、架构基本介绍、Pulsar提供的组件介绍、Brokers介绍、Zookeeper的元数据存储、基于bookKeeper持久化存储、Pulsar代理
  10. js html页面原生js横向打印