Python实现汉诺塔代码

Python 一步一步教你用pyglet制作汉诺塔游戏(终篇) 这个传说讲述了大梵天创造世界的时候,他做了三根金刚石柱子,并在其中一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门将这些圆盘从下面开始按大小顺序重新摆放在另一根柱子上,并规定在小圆盘上不能放大圆盘,同时在三根柱子之间一次只能移动一个圆盘。当盘子的数量增加时,移动步骤的数量会呈指数级增长,圆盘数为n时,总步骤数steps为2^n - 1。这个问题不仅是一个数学和逻辑问题,也是一个很好的教学工具,可以用来教授递归、算法和逻辑思考等概念。 阅读详情
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)   
        #将第n个盘子从x移动到z上
 
        hanoi(n-1,y,x,z)
        #将y上的n-1个盘子从y移动到z上
 
n = int(input('请输入汉诺塔层数:'))
hanoi = (n,'x','y','z')

学习Python中遇到的实际困难,汉诺塔程序,希望对大家有帮助,

详解如下:

最开始我遇到的困难时定义的hanoi()函数调用的过程中,x,y,z的顺序看不懂,其实换一种思想,

不论怎么移动,都可以将三根柱子分为,起始柱,辅助柱,目标柱

第一步:将n-1个盘子从x移动到y                      实际情况是:x为起始柱,z为辅助柱,y为目标柱

第二步:将第n个盘子从x移动到z                     实际情况是:x为起始柱,y为辅助柱,z为目标柱

第三步:将在y柱上的n-1个盘子从y移动到z      实际情况是:y为起始柱,x为辅助柱,z为目标柱

故调用结果为:

haooi  (n-1,x,z,y)

hanoi  (1,x,y,z)

hanoi  (n-1,y,x,z)

希望对大家有帮助!!!更多福利下方领取哦!


 

 

Python实现汉诺塔 分清楚形参和实参,变来变去的是实参,也就是我们刚开始传入的'A' , 'B' , 'C'三个值,他们通过形式参数 'x' , 'y' ,'z' 来进行传递。此时的n=2,不等于1所以程序会进行第二次调用,继续执行else下面的代码块也是第一行代码Hanoi(n-1,x,z,y)第一次调用的代码 Hanoi(n-1,x,z,y)执行完毕,会接着执行第一次调用的print(x,'-->',z)递归的含义是等到最底层的代码执行完毕,一层一层的往上面返回,要明白代码的具体执行过程。的预期寿命据说也就是数百亿年。 阅读详情

相关推荐

汉诺塔问题的Python代码实现

假设1秒移动一次,当n=64时,需要18446744073709551615秒。

weixin_47127612的博客 1028

python汉诺塔编程代码

这个程序定义了一个名为 `hanoi` 的函数,它接受四个参数:盘子的数量(n)、源柱子(source)、目标柱子(target)和辅助柱子(auxiliary)。在测试中,我们使用3个盘子,源柱子为A,目标柱子为C,辅助柱子为B。print(f"把第 {n} 个盘子从 {source} 移动到 {target}")# 把 n-1 个盘子从 source 移动到 auxiliary。# 把 n-1 个盘子从 auxiliary 移动到 target。# 将n-1个盘子从辅助柱移动到目标柱。

花生日记 4585

python汉诺塔游戏_python如何实现汉诺塔小游戏 python实现汉诺塔小游戏代码示例...

python如何实现汉诺塔小游戏?本篇文章小编给大家分享一下python实现汉诺塔小游戏代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。代码如下:#左中右塔用一个列表存储left = list()center = list()right = list()"""初始化函数"""def init():size = input("(请友善输入整数,...

weixin_42128315的博客 573

汉诺塔问题(Python实现)

递归问题之汉诺塔问题,Python实现

Elon15的博客 1万+

python:实现汉诺塔(附完整源码)

python:实现汉诺塔(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1516

STM32 使用IO口模拟I2C时序

上一篇《I2C协议详解》 我们了解了I2C的操作流程,这一篇,我们就使用I2C,来对EEPROM进行操作吧。 我们做两种选择: 1.时序由IO口模拟高低电平,需要了解协议并按照协议操作相应的IO口。 2.时序由硬件自行产生,不需要人工干预; 由硬件产生的I2C时序,我们借助Stm32Cube配置实现便可,我们这一篇,抛开Stm32Cube,手撕代码,根据I2C的时序,一步步地实现I2C对...

8935

用python实现汉诺塔算法!(含代码示例)

前言: 今天为大家带来的内容是:python实现的汉诺塔算法,结合实例形式分析了汉诺塔算法的原理、实现方法及相关操作注意事项,需要的朋友可以参考下!(喜欢文章的朋友记得点赞转发关注不迷路哦) 本文实例讲述了python实现的汉诺塔算法。分享给大家供大家参考。 具体如下: 用python实现汉诺塔算法!(含代码示例) 规则: 圆盘从下面开始按大小顺序重新摆放在另一根柱子上...

weixin_41334453的博客 1万+

原创_新魔百和CM201-1鸿蒙架构当贝乐家语音安卓9线刷固件包刷机教程可救砖rom刷机包

不用担心变砖,因为系统内核会自动判断分区及CPU等级,假设你CPU是高于S905L3的那么。7.adb功能支持,系统增加开机自启功能,添加老人桌面模式,默认为年轻化桌面;所以我发的这个固件可适用于_cw_ys_zg_zn代工上生产的盒子进行刷机;5.CPU及GPU算法更改,当观看4K片源时,AI智能会自动优化系统后台进程,正如我所说,本固件是采用安卓公版镜像制作而成,那么代工厂也是使用的公版镜像,1.移植鸿蒙架构代码,完美融合安卓系统,增加系统的稳定性;刷机的时候 他会自动短接链接,所以不存在变砖。

a138088150的博客 1万+

递归典型问题:汉诺塔算法+python代码实现

如果你不想看过程,想直接使用代码可直接移步末尾处:代码,调用示例及结果 问题简述: 据说古代有一个梵塔,塔内有三个底座A、B、C,A 座上有64 个盘子,盘子大小不等,大的在下,小的在上。有一个和尚想把这64 个盘子从A 座移到C 座,但每次只能允许移动一个盘子。在移动盘子的过程中可以利用B 座,但任何时刻3 个座上的盘子都必须始终保持大盘在下、小盘在上的顺序。如果只有一个盘子,则不需要利用B 座,直接将盘子从A 移动到C 即可。 问题分析: 假设共有Num个盘子,不难发现,必须要将上层

m0_54526251的博客 1169

HDMI设计6--Video PHY Controller IP

Reference:https://china.xilinx.com/content/dam/xilinx/support/documentation/ip_documentation/vid_phy_controller/v2_2/pg230-vid-phy-controller.pdf 1. 序 Video PHY Controller IP是为实现与视频(DisplayPort和HDMI™技术)MAC传输或接收子系统的即插即用连接而设计的。视频MAC层和PHY层的接口是标准化的,能...

Archar_Saber的博客 8338

【Spreadsheet】香港规范结构设计电子表格库开发方案

深入理解香港本地规范特点和要求结合国际先进标准(Eurocode) 的技术内容考虑香港地理环境特殊性 (台风、地质等)建立完善的质量控制体系保持持续更新维护的能力。

hmywillstronger的博客 1361

汉诺塔python代码解释_详解python百行有效代码实现汉诺塔小游戏(简约版)

直接上代码:#左中右塔用一个列表存储left = list()center = list()right = list()"""初始化函数"""def init():size = input("(请友善输入整数,未写判断!)请输入层数:")#初始化塔列表,如5层 左边塔放 1-3-5-7-9,中间和右边放5个-1for i in range(1,int(size) + 1):left.append(...

weixin_39700215的博客 282

实战分享:如何用Java调用Doris FE接口实现高效Stream Load数据导入(附完整代码)

本文详细介绍了如何通过Java调用Doris FE接口实现高效的Stream Load数据导入,包含完整代码示例和性能优化技巧。Stream Load作为Doris的高效数据导入方式,相比传统JDBC提升5-10倍速度,适用于大规模数据处理场景,帮助开发者解决高吞吐量数据导入挑战。

weixin_29304985的博客 417

python递归汉诺塔详解_使用Python递归函数实现汉诺塔游戏,及代码运行步骤详解...

废话少说,代码如下1 def move(n, a='A', b='B', c='C'):2 if n == 1:3 return print(a, "->", c)4 else:5 move((n-1), a, c, b)6 print(a, "->", c)7 move((n-1), b, a, c)89 move(3)最近在廖雪峰的网站学习Pytho...

weixin_39601511的博客 553

保姆级教程:用OpenCV搞定鱼眼双目相机的标定与测距(附完整C++代码)

本文详细介绍了使用OpenCV进行鱼眼双目相机标定与测距的全流程,包括环境搭建、数据采集、单目标定、双目标定、立体校正和视差计算等核心步骤。通过完整的C++代码示例和参数调优指南,帮助开发者快速实现高精度的双目测距系统,适用于机器人导航、VR全景拍摄等领域。

weixin_42573113的博客 387

CDDT CST CDDT CSTTT

This is the second part of the SA8653 automotive CDDT configuration guide. It describes the matching rules and modification methods between CDDT and device‑tree DDTS. It explains CDT’s underlying logic and configuration in TZ, QNX and Android. It details C

qq_39257814的博客 1409

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

题目:汉诺塔给出最优解,如果对汉诺塔的定义有不了解,请翻看数据结构教材。除了最基本的之外,还有一题,给定一个数组,arr=[2,3,1,2,3],其含义是这是一个有5个圆盘的汉诺塔,每一个数字代表这个圆盘所在的位置,1代表左边的柱子,2代表中间,3代表右边。给出这个序列代表了汉诺塔移动的第几步,如果该步骤是错误的,则返回-1,所谓错误,是指该步骤不是最简便的得到汉诺塔序列的操作步骤。分析:1、 算...

weixin_39644146的博客 787

基于双目视觉的行车中障碍距离检测方法研究与目标跟踪

本文将介绍基于Python语言的双目视觉技术,以及如何使用该技术检测行车中的障碍物并跟踪目标。双目视觉利用两个摄像头模拟人眼的立体视觉,通过对两个摄像头所捕捉的图像进行比较和分析,可以得到物体的深度信息。首先,我们需要安装Python的OpenCV库,该库提供了丰富的图像处理和计算机视觉功能。接下来,我们进入一个循环中,不断读取左右图像,并将其转换为灰度图像。在视差图上,您可以实现目标检测和跟踪算法来识别和跟踪行车中的障碍物。请注意,上述代码只是一个简单示例,您可以根据具体需求和算法进行修改和扩展。

ZgnObjectivec的博客 276

汉诺塔问题递归算法python代码_[python]汉诺塔问题递归实现

一、问题描述及算法步骤汉诺塔问题的大意是有三根柱子a, b, c,现在a柱有N个盘子从下往上尺寸递减排列,要求:1. 将a上的盘子移动到c柱上;2. 每次移动一个盘子;3. 柱子上的盘子始终必须是大的在下面image.png汉诺塔问题的经典实现算法步骤如下:1.把 前N-1个盘子移动到过渡柱b2.把最低下的盘子从起始柱a移到终点柱c3.然后把b柱的N-1个盘子也移到终点柱c实现过程是一个递归的过程...

weixin_39800387的博客 1052

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

汉诺塔——原理讲解+python代码实现

如果比较急的可以点击直接看思路总结 或者点击这里看程序代码 汉诺塔简介: 先来看下什么是汉诺塔 当我们只有一个盘子的时候,so easy,直接把盘子从A移到B就可以了。好的我们已经掌握了一个盘子的挪动方法。既然会挪动一个盘子,那n个盘子我们也就会挪动了。 当我们在写递归函数时,要有一个坚定的信念——相信这个函数一定可以完成它的任务。 这是我今天会一直强调的一句话。 来看一下两个盘子的情况: 大...

Faye_Gu的博客 4861

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

汉诺塔递归解决思路图解分析,python代码实现

以4层汉诺塔,找出递归规律,进行代码实现

weixin_53456019的博客 2721

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

python代码实现汉诺塔问题

汉诺塔问题描述:如图,有A ,B , C三个柱子,A上有n个盘子,每次只能从A上移动一个盘子,且必须保证大盘子在小盘子下面。问如何将A上的盘子移动到C盘??思考:编写move(n, a, b, c)函数,它接收参数n,表示3个柱子A、B、C中第1个柱子A的盘子数量,然后打印出把所有盘子从A借助B移动到C的方法,代码如下:def move(n,a,b,c): if n == 1: ...

qq_28632639的博客 1万+

“经典汉诺塔”问题----(内附Java、python实现代码)

经典汉诺塔问题是什么? 废话不多逼逼,看题: 相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘(如下图)。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C...

qiukui111的博客 2636

Python代码实现汉诺塔Hanoi游戏

Python代码实现汉诺塔Hanoi游戏 def hanoi(n, x, y, z): if n == 1: print(x, ' --> ', z) else: hanoi(n-1,x,z,y) # 将前n-1个盘子从x移动到y上 print(x, ' --> ', z) # 将最底下的最后一个盘子从x移动到z上 hanoi(n-1,y,x,z) # 将y上的n-1个盘子移动到z上 n = in

qq_40662487的博客 1027
上一篇: 用python+pillow模块实现抖音晃眼睛的特效,图像处理之路(附源码)
下一篇: 用python打印爱心(程序猿的浪漫)
python2021_
博客等级 码龄6年 1730粉丝 157原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值