本文实例为大家分享了python求解汉诺塔游戏的具体代码,供大家参考,具体内容如下

一、问题定义

百度百科定义:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。据说大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照从小到大顺序摞着64片黄金圆盘。大梵天命令婆罗门借助其中一根柱子,把64片黄金圆盘重新摆放到第三个根柱子上。并且规定,在小黄金圆盘上不能放大的黄金圆盘,在三根柱子之间一次只能移动一个圆盘。

例如,如果黄金圆盘只有3片,则为了满足游戏规则,那么必须按照如下图所示的8个步骤完成:

二、代码实现

# 将n个盘子借助y柱从x柱移动到z柱

def hanoi(n, x, y, z):

count = 0

if n == 1: # 递归出口

print(x, ' --> ', z)

return 1

else:

# 将前n - 1个盘子借助z柱从x柱移动到y柱上

count += hanoi(n - 1, x, z, y) # 递归调用

# 将最底下的1个盘子从x柱移动到z柱上

count += hanoi(1, x, y, z)

# 将n - 1个盘子借助x柱从y柱移动到z柱上

count += hanoi(n - 1, y, x, z) # 递归调用

return count

def main():

hanoi_level = input("请输入汉诺塔层数:")

print("总共移动次数为%d" % hanoi(int(hanoi_level), 'X', 'Y', 'Z'))

if __name__ == '__main__':

main()

当黄金圆盘为4层时,代码的输出结果为:

请输入汉诺塔层数:4

X --> Y

X --> Z

Y --> Z

X --> Y

Z --> X

Z --> Y

X --> Y

X --> Z

Y --> Z

Y --> X

Z --> X

Y --> Z

X --> Y

X --> Z

Y --> Z

总共移动次数为15

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

汉诺塔python代码解释_python求解汉诺塔游戏相关推荐

  1. 汉诺塔python代码解释_python实现汉诺塔算法

    题目: 汉诺塔给出最优解,如果对汉诺塔的定义有不了解,请翻看数据结构教材. 除了最基本的之外,还有一题,给定一个数组,arr=[2,3,1,2,3],其含义是这是一个有5个圆盘的汉诺塔,每一个数字代表 ...

  2. 汉诺塔python代码解释_Python-汉诺塔原理分析

    最近在"廖雪峰的官方网站"学习Python,遇到汉诺塔递归问题百思不得其解,先是百度了汉诺塔原理,然后查看了别人的写的文章,通过整理汇总,希望能够帮助其他人理解. 汉诺塔原理:(来 ...

  3. 天天向上的力量python代码解释_python天天向上的力量

    # 天天向上的力量 持续的价值 ''' 千分之一的力量 一年365天,每天进步1%,累积进步多少? 一年365天,每天退步1%,累积剩下多少? ''' dayUp1 = pow(1.001,365) ...

  4. python写一个游戏多少代码-使用50行Python代码从零开始实现一个AI平衡小游戏

    集智导读: 本文会为大家展示机器学习专家 Mike Shi 如何用 50 行 Python 代码创建一个 AI,使用增强学习技术,玩耍一个保持杆子平衡的小游戏.所用环境为标准的 OpenAI Gym, ...

  5. 50行python游戏代码_使用50行Python代码从零开始实现一个AI平衡小游戏

    使用50行Python代码从零开始实现一个AI平衡小游戏 发布时间:2020-10-23 09:26:14 来源:脚本之家 阅读:74 集智导读: 本文会为大家展示机器学习专家 Mike Shi 如何 ...

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

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

  7. python代码解释4个作用域_Python中作用域的深入讲解

    前言 作用域是指变量的生效范围,例如本地变量.全局变量描述的就是不同的生效范围. python的变量作用域的规则非常简单,可以说是所有语言中最直观.最容易理解的作用域. 在开始介绍作用域之前,先抛一个 ...

  8. em算法python代码_EM 算法求解高斯混合模型python实现

    注:本文是对<统计学习方法>EM算法的一个简单总结. 1. 什么是EM算法? 引用书上的话: 概率模型有时既含有观测变量,又含有隐变量或者潜在变量.如果概率模型的变量都是观测变量,可以直接 ...

  9. python代码架构_Python架构

    一.自动化测试框架 1.什么是自动化测试框架 简单来说,自动化测试框架就是由一些标准,协议,规则组成,提供脚本运行的环境.自动化测试框架能够提供很多便利给用户高效完成一些事情,例如,结构清晰开发脚本, ...

  10. python代码风格_Python编码风格,看这篇就够了

    如果有人问起 Python 程序员他们最喜欢 Python 哪一点,他们一定会提到 Python 的高可读性.确实,对于 Python 来说,其高可读性一直是 Python 这门语言设计的核心.一个不 ...

最新文章

  1. python安装包为什么这么小-python为什么要安装到c盘
  2. [转载]基于数据挖掘技术入侵检测系统研究
  3. linux几个常用的环境变量配置文件
  4. php怎麼讲$字段的值截取第一个字,PHP截取中文字符串方法总结
  5. Unity3d截图两种方式
  6. virtualenv 模块
  7. html get请求_99% 的人都理解错了 HTTP 中 GET 与 POST 的区别【面试必问】
  8. Nginx解决前端调用后端接口跨域问题
  9. java redis 原子操作_7000字 Redis 超详细总结笔记 !建议收藏
  10. 1195 巧妙推算走楼梯(宁波大学oj)
  11. 删除上传文件中可能包含的空行
  12. 关于如何使用IfcRelAggregates来对IFC中的元素进行关联
  13. 尚硅谷大数据Spark之RDD转换算子学习笔记及面试题
  14. 使用Oracle的sshUserSetup.sh脚本配置SSH互信
  15. pod中mysql配置文件修改_Pod中的secret,configmap,downwardapi的使用记录
  16. 山东大学项目实训——解决微信小程序无法获得用户信息问题
  17. ios查看苹果app的下载量,日活,销售情况等相关数据
  18. 定位器百科:老人、小孩的GPS定位器是如何工作的
  19. VB.net版机房收费系统——结账功能实现(代码部分)
  20. Linux排查和防守

热门文章

  1. codeforces 407C Curious Array 数学
  2. Norms for Vectors and Matrices
  3. Android编程权威指南第三版 第32章
  4. 华为改变策略,出击超低端手机市场
  5. winrar破解方法
  6. 未能加载文件或程序集什么原因
  7. apple id两步验证服务器,apple id两步验证 苹果Apple ID两步式验证设置使用教程
  8. 蓝凌OA 漏洞学习——treexml.tmpl 远程命令执行漏洞
  9. cents7之我的ip问题
  10. puppeteer学习(三)——抓取“相关搜索”关键词搜索豆瓣图书榜