用python编写一个汉诺塔的移动函数_关于python递归函数实现汉诺塔
def move(n,a,b,c): #1
if n==1: #2
print(a,'-->',c) #3
else: #4
move(n-1,a,c,b) #5
move(1,a,b,c) #6
move(n-1,b,a,c) #7
print(move(3,'A','B','C')) #8
以上是我从网上看到的实现方法,有几个地方不太明白,求解答,非常感谢~
假如n=3,执行move的时候会运行到#5,#5执行完了以后的结果是move(2,a,c,b),然后是又跳回到#1重新执行,讲n-1传递给n,a传递给a,c传递给b,b传递给c,如果我的a,b,c的值为X,Y,Z的话,那重新执行的也就是move(2,X,Z,Y),然后继续执行到#5,又重新调用自身,这个时候是不是就变成了move(1,X,Y,Z)了?然后匹配了if的条件,输出了X-->Z吗?输出了#3以后,再往下是怎么执行的,直接执行#6了吗?好像也不对呀,#6是的n=1,那不是直接有输出了X-->Z吗?
有点糊涂了,小弟初学python,以前也没编程基础,网上看了其他资料和视频,还找了汉诺塔游戏玩了下,最终还是没看明白,天资愚钝,希望各位能帮助下小弟,在此谢过!
越详细越好。
经过这几天自己琢磨勉强看懂了一些,但是还是感觉太抽象了。
请问为什么move(n-1,a,c,b)代表把n-1个盘子从a借助c移动到b啊,move是我定义函数的名字,感觉没什么道理呀!
还有python的递归函数在调用自身很多层的时候,在什么情况下才认为一层的调用结束了呀,是有return返回?还是有print输出?有print的输出的时候是否会继续往下执行?还是退回到上一层?
真心想弄明白,我看网上很多人都是只是说,把所有盘子的移动看成三步,先把n-1借助C移动到B,再将n从A移动到C,再把n-1从B移动到C,这个道理我也能勉强想明白,但是代码的实现就真的无法理解了呀!
用python编写一个汉诺塔的移动函数_关于python递归函数实现汉诺塔相关推荐
- python写一个app接收摄像头传输的视频_使用Python的Flask框架实现视频的流媒体传输...
Flask 是一个 Python 实现的 Web 开发微框架.这篇文章是一个讲述如何用它实现传送视频数据流的详细教程. 我敢肯定,现在你已经知道我在O'Reilly Media上发布了有关Flask的 ...
- python编写一个程序、实现文件的复制_写个python 脚本实现文件的递归拷贝
<派森>(Python)3.13 win32 英文安装版 类型:编程工具大小:21M语言:英文 评分:8.7 标签: 立即下载 今天翻电脑时突然发现有个存了很多照片和视频的文件夹,想起来是 ...
- python编写一个将十进制转换为二进制的函数
1.具体做法: 十进制整数转换为二进制整数采用"除2取余,逆序排列"法.具体做法是:用2整除十进制整数,可以得到一个商和余数:再用2去除商,又会得到一个商和余数,如此进行,直到商为 ...
- python中删除字典中所有元素的函数_在python中,按值删除字典项的最佳方法是什么?...
由于在循环内更改字典的大小会导致运行时错误,因此必须创建一个副本以进行迭代.使用items()遍历字典中的键和值对,并将每个值与要查找的值进行比较.如果匹配,请从字典中删除密钥.for key, va ...
- python软件怎么用-如何使用Python编写一个桌面软件系统?步骤有哪些
建议直接用python编写一个网页服务器,然后就在本机用浏览器来使用. 简单介绍一下这样做的好处: [1]python的桌面GUI模块都不太好用,比如pyQT需要额外安装很大的QT,tkinter则相 ...
- 用python朗读字母-使用python编写一个语音朗读闹钟功能的示例代码
想找一个可以播放文字的闹钟找不到,自己写一个更简单.TTS实现由很多种办法,百度等都提供了API接口,但类似百度,需要先注册等一系列动作. 其实windows自带的win32com功能可以简单实现TT ...
- 用python编写一个高效搜索代码工具
用python编写一个高效搜索代码工具 大多码农在linux环境下使用grep+关键词的命令搜索自己想要的代码或者log文件.今天介绍用python如何编写一个更强大的搜索工具,windows下也适用 ...
- 搜索python代码的软件_用python编写一个高效搜索代码工具
用python编写一个高效搜索代码工具 大多码农在linux环境下使用grep+关键词的命令搜索自己想要的代码或者log文件.今天介绍用python如何编写一个更强大的搜索工具,windows下也适用 ...
- python编写登录_通过Python编写一个简单登录功能过程解析
通过Python编写一个简单登录功能过程解析 需求: 写一个登录的程序, 1.最多登陆失败3次 2.登录成功,提示欢迎xx登录,今天的日期是xxx,程序结束 3.要检验输入是否为空,账号和密码不能为空 ...
最新文章
- vue indev.html,webpack多入口热加载很慢
- IE6.0,ie7.0与Firefox的CSS兼容性问题
- AndroidStudio中调试时提示waiting for debugger的奇葩解决
- Cygwin下安装Android NDK
- redhat linux7.0的安装
- python中设置时间格式--模块datetime中日期和时间格式的参数
- computed的原理
- (14)H5新增表单属性
- Windows IIS 服务器配置HTTPS启用TLS协议。
- 两段检验系统生成的identityHashCode是否重复的代码
- AD软件原理图库、PCB封装库创建
- 支付系统中人民银行支付系统(CNAPS)和中国银联下面的跨行支付系统是一回事儿吗?
- iMazing怎么恢复备份?iMazing恢复备份教程分享
- java.lang.RuntimeException: com.google.inject.CreationException: Unable to create injector异常
- 方差分析 球形检验_spss球形检验.PDF
- 一分钟让你学会做搜索关键字高亮
- 国外博士后申请心得,博后位置,CV,电话面试面经,签证等
- 抖音网红是如何推广产品的?
- 确定账号登录和密码确认
- PostgreSQL 之 流复制主备库切换