python递归算法 - 汉诺塔问题
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递归算法 - 汉诺塔问题相关推荐
- python汉诺塔递归算法流程图,python实现汉诺塔递归算法经典案例
Python汉诺塔递归问题 python请用递归算法编程解决汉诺塔问题 在线等 关于python递归函数实现汉诺塔 def move(n,a,b,c): #1 if n==1: #2 print(a, ...
- 使用Python查看汉诺塔移动详细过程
汉诺塔属于比较经典的问题,详见以前的文章Python模拟汉诺塔问题移动盘子的过程,基于非递归算法的汉诺塔游戏之Python实现. 本文代码功能:模拟移动汉诺塔上的盘子,并实时显示3根柱子上盘子的情况. ...
- 用 python 解决汉诺塔问题并附带演示过程
用 python 解决汉诺塔问题并附带演示过程 参考文章: (1)用 python 解决汉诺塔问题并附带演示过程 (2)https://www.cnblogs.com/shinawear/p/1061 ...
- python 游戏 —— 汉诺塔(Hanoita)
python 游戏 -- 汉诺塔(Hanoita) 一.汉诺塔问题 1. 问题来源 问题源于印度的一个古老传说,大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆 ...
- 汉诺塔游戏java下载,利用python实现汉诺塔游戏
本文实例为大家分享了python实现汉诺塔游戏的具体代码,供大家参考,具体内容如下 一.汉诺塔 汉诺塔问题是一个经典的递归问题,对于这个问题,我们可以把它简单的去看成是如何用n-1去表示n. 在A,B ...
- python堆栈汉诺塔非递归_汉诺塔问题的递归解法和非递归解法(python语言实现)...
汉诺塔问题的非递归解法(python语言类解法) #!/usr/bin/env python #coding:utf-8 import sys import time reload(sys) sys. ...
- C语言递归算法——汉诺塔问题(河内塔)
汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆罗门把圆盘 ...
- 如何用python写汉诺塔游戏的辅助
今天我来分享如何用python写一个游戏的辅助 大游戏的外挂我们写不了但是我们可以写个小游戏–汉诺塔 的外挂,这个游戏相信很多同学都玩过. 开始是三层,还很简单,四层还好,五层六层就有点费脑壳了. 话 ...
- 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) ...
最新文章
- 安卓 画板 学习笔记
- Aggregation,Composition和Dependency
- 把整数转换成2的n次方的和数组
- android-XML解析Dom,Sax,Pull
- pycharm 使用教程
- Django-Celery异步发送激活邮件,以及注意点
- iOS compare 字符串比较
- QT5开发及实例学习之十二Qt5图像坐标变换
- 服务器怎么操作系统版本,服务器怎么操作系统版本
- 生成交叉表的简单通用存储过程
- Eclipse中,lombok安装
- java中获取链表的第一个节点,两个链表中的第一个公共节点(java)
- 第一篇论文:改进TCP及UDP的性能分析及比较
- 在 Delphi 下使用 DirectSound (1): 枚举播放设备
- Groovy入门教程
- 人工智能核心能力包括哪些层面?
- 【NVIDIA】Win10 + CUDA10 + cuDNN 安装教程
- 初探三维计算机视觉(三维重建) —— 相机模型 + 双目系统 + 点云模型
- 视觉slam直接法,特征点法
- html页面中艺术字,html 生成艺术字
热门文章
- EntityFramework之领域驱动设计实践(五)
- vue3查看当前路由
- 播放网易云音乐时,有电话呼入,音乐并不会停止播放。
- oracle报错解决
- 解决华擎J3455主板DSM兼容性问题
- RadioButton设置默认选中后无法取消,可选中多个的问题
- java 工作流 jbpm,J2EE工作流管理系统jBPM详解(一)(4)
- Java课程大作业设计:实现联网对战、实时聊天、多线程编程的五子棋项目
- 02_Pulsar的集群架构、架构基本介绍、Pulsar提供的组件介绍、Brokers介绍、Zookeeper的元数据存储、基于bookKeeper持久化存储、Pulsar代理
- js html页面原生js横向打印