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递归函数实现汉诺塔相关推荐

  1. python写一个app接收摄像头传输的视频_使用Python的Flask框架实现视频的流媒体传输...

    Flask 是一个 Python 实现的 Web 开发微框架.这篇文章是一个讲述如何用它实现传送视频数据流的详细教程. 我敢肯定,现在你已经知道我在O'Reilly Media上发布了有关Flask的 ...

  2. python编写一个程序、实现文件的复制_写个python 脚本实现文件的递归拷贝

    <派森>(Python)3.13 win32 英文安装版 类型:编程工具大小:21M语言:英文 评分:8.7 标签: 立即下载 今天翻电脑时突然发现有个存了很多照片和视频的文件夹,想起来是 ...

  3. python编写一个将十进制转换为二进制的函数

    1.具体做法: 十进制整数转换为二进制整数采用"除2取余,逆序排列"法.具体做法是:用2整除十进制整数,可以得到一个商和余数:再用2去除商,又会得到一个商和余数,如此进行,直到商为 ...

  4. python中删除字典中所有元素的函数_在python中,按值删除字典项的最佳方法是什么?...

    由于在循环内更改字典的大小会导致运行时错误,因此必须创建一个副本以进行迭代.使用items()遍历字典中的键和值对,并将每个值与要查找的值进行比较.如果匹配,请从字典中删除密钥.for key, va ...

  5. python软件怎么用-如何使用Python编写一个桌面软件系统?步骤有哪些

    建议直接用python编写一个网页服务器,然后就在本机用浏览器来使用. 简单介绍一下这样做的好处: [1]python的桌面GUI模块都不太好用,比如pyQT需要额外安装很大的QT,tkinter则相 ...

  6. 用python朗读字母-使用python编写一个语音朗读闹钟功能的示例代码

    想找一个可以播放文字的闹钟找不到,自己写一个更简单.TTS实现由很多种办法,百度等都提供了API接口,但类似百度,需要先注册等一系列动作. 其实windows自带的win32com功能可以简单实现TT ...

  7. 用python编写一个高效搜索代码工具

    用python编写一个高效搜索代码工具 大多码农在linux环境下使用grep+关键词的命令搜索自己想要的代码或者log文件.今天介绍用python如何编写一个更强大的搜索工具,windows下也适用 ...

  8. 搜索python代码的软件_用python编写一个高效搜索代码工具

    用python编写一个高效搜索代码工具 大多码农在linux环境下使用grep+关键词的命令搜索自己想要的代码或者log文件.今天介绍用python如何编写一个更强大的搜索工具,windows下也适用 ...

  9. python编写登录_通过Python编写一个简单登录功能过程解析

    通过Python编写一个简单登录功能过程解析 需求: 写一个登录的程序, 1.最多登陆失败3次 2.登录成功,提示欢迎xx登录,今天的日期是xxx,程序结束 3.要检验输入是否为空,账号和密码不能为空 ...

最新文章

  1. vue indev.html,webpack多入口热加载很慢
  2. IE6.0,ie7.0与Firefox的CSS兼容性问题
  3. AndroidStudio中调试时提示waiting for debugger的奇葩解决
  4. Cygwin下安装Android NDK
  5. redhat linux7.0的安装
  6. python中设置时间格式--模块datetime中日期和时间格式的参数
  7. computed的原理
  8. (14)H5新增表单属性
  9. Windows IIS 服务器配置HTTPS启用TLS协议。
  10. 两段检验系统生成的identityHashCode是否重复的代码
  11. AD软件原理图库、PCB封装库创建
  12. 支付系统中人民银行支付系统(CNAPS)和中国银联下面的跨行支付系统是一回事儿吗?
  13. iMazing怎么恢复备份?iMazing恢复备份教程分享
  14. java.lang.RuntimeException: com.google.inject.CreationException: Unable to create injector异常
  15. 方差分析 球形检验_spss球形检验.PDF
  16. 一分钟让你学会做搜索关键字高亮
  17. 国外博士后申请心得,博后位置,CV,电话面试面经,签证等
  18. 抖音网红是如何推广产品的?
  19. 确定账号登录和密码确认
  20. PostgreSQL 之 流复制主备库切换

热门文章

  1. XML解析:PULL解析
  2. VMware下 Fedora 14安装VMWare Tools
  3. 吴裕雄--天生自然 高等数学学习:空间直角坐标系
  4. 高性能红黑二叉树实现
  5. canvas的基础使用。
  6. thinkphp模板常用的方法
  7. Google Chrome 调试JS简单教程[更新]
  8. Eclipse 调试器
  9. Google 发布最新 IDC 能源消耗报告
  10. 基于Spring Security的认证授权_WEB授权_Spring Security OAuth2.0认证授权---springcloud工作笔记132