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基础_认识Python

    Python基础入门(全套保姆级教程) 第一章 第一节:Python基础_认识Python 1. 什么是编程 通俗易懂,编程就是用代码编写程序,编写程序有很多种办法,像c语言,javaPython语言 ...

  2. python汉诺塔运行程序_用python编写一个程序,得到汉诺塔的解决方案

    古代有一座汉诺塔,塔内有3个座A.B.C,A座上有n个盘子,盘子大小不等,大的在下,小的在上,如图所示. 有一个和尚想把这n个盘子从A座移到C座,但每次只能移动一个盘子,并且自移动过程中,3个座上的盘 ...

  3. java python算法_用Python,Java和C ++示例解释的排序算法

    java python算法 什么是排序算法? (What is a Sorting Algorithm?) Sorting algorithms are a set of instructions t ...

  4. excel python插件_利用 Python 插件 xlwings 读写 Excel

    Python 通过 xlwings 读取 Excel 数据 去年底公司让我做设备管理,多次委婉拒绝,最终还是做了.其实我比较喜欢技术.做管理后发现现场没有停机率统计,而原始数据有,每次要自己在Exce ...

  5. 网络安全用python吗_使用Python进行网络安全渗透——密码攻击测试器

    相关文章: 本篇将会涉及: HTTP 基本认证 对HTTP Basic认证进行密码暴力攻击测试 什么是HTTP 基本认证 HTTP基本认证(HTTP Basic Authentication)是HTT ...

  6. python求和_用python求和

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 我正在计算一个求和级数. 我有一个有值的表(见下文)a_(ij),并且p = 1 ...

  7. 动态照片墙 python 实现_利用python生成照片墙的示例代码

    这篇文章主要介绍了利用python生成照片墙的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 PIL(Python Im ...

  8. python编辑器_自学python第一课之下载安装编辑器

    一.Python编辑器安装 第一步:打开下载好的安装包,点击python3.7安装环境: 第二步:注意:一定要勾选上add Python 3.7 to PATH,不然就不会自动添加到系统环境变量里,可 ...

  9. python字符串_(Python基础教程之七)Python字符串操作

    Python基础教程 在SublimeEditor中配置Python环境 Python代码中添加注释 Python中的变量的使用 Python中的数据类型 Python中的关键字 Python字符串操 ...

  10. python 字符识别_使用python进行光学字符识别入门

    python 字符识别 语言模型设计 (Language Model Designing) Optical Character Recognition is the conversion of 2-D ...

最新文章

  1. Python学习笔记《Python核心编程》第4章Python对象
  2. VS2017 安装,建议大家都看一下这个在卸载,真人真事,防止扑街
  3. Ubuntu 14.04安装JDK1.8.0_25与配置环境变量
  4. Java入门超简单程序Song List
  5. AAAI 2021 | 幻灯片中文字的重要性预测赛亚军DeepBlueAI团队技术分享
  6. openresty配置部署
  7. [前台]---js重复上传一张图片两次,第二次失败的解决办法和思路
  8. 关于 Oracle 存储双活配置和实战
  9. 金三银四的面试黄金季节,Android面试题来了!
  10. 面向对象编程已死,OOP 永存!
  11. HTML5+JS调用摄像头
  12. 马尔科夫模型 Markov Model
  13. 六大免费网站数据采集器对比(火车头,海纳,云采集,ET,三人行,狂人采集)
  14. 适用于高密度或高精度应用的高度可配置和可扩展的螺旋电容器设计
  15. 如何取消服务器自动关机,XP系统怎么取消自动关机?
  16. 【项目实践】网络对战五子棋
  17. word怎么恢复保存前的文件,word文件恢复
  18. 小米平板2刷android,小米平板2怎么刷回MIUI 小米平板2刷回MIUI教程
  19. JAVA里的空白\t\n\r分别代表什么?
  20. 阿里云服务器遭到DDOS攻击怎么解决

热门文章

  1. Kali Linux常用服务配置教程安装及配置DHCP服务
  2. 计算机后期剪辑专业是学什么,【答疑】学后期剪辑用什么电脑比较好?有什么电脑配置要求? - 视频教程线上学...
  3. python调用dll时路径问题_IDEA 使用 JNA 时,DLL 文件路径问题
  4. python类实例化 输入参数名字 下划线_Python 的类的下划线命名有什么不同?
  5. mvvm模式和mvc的区别_mvvm 和 mvc 区别?
  6. java socket 重连复用,20190818 On Java8 第八章 复用
  7. 横河压力变送器选型_压力变送器的原理和选型技巧
  8. iOS将文件在自己App中打开
  9. vue调用后台api_基于ThinkPHP V5+VUE开发的面向API的后台管理系统
  10. 什么是EEG以及如何解释EEG?