来源于b站小甲鱼新版python p51 汉诺塔

看第一遍感觉太懵了,第二遍才搞懂。写下来理解


先贴代码

def hanoi(n,x,y,z):if n==1:print(x,'-->',z)          #如果只有1层,直接将金片从x移动到zelse:hanoi(n-1,x,z,y)          #将x上的n-1个金片移动到yprint(x,'-->',z)          #将最底下的金片从x移动到zhanoi(n-1,y,x,z)          #将y上的n-1个金片移动到zn=int(input("请输入汉诺塔的层数:"))
hanoi(n,'A','B','C')

逻辑很简单,以三层金片举例。

想把A的最底层放在C,就要先把上两层放在B。

想把上两层放B,就要先把最上层的放C。就是和注释中所讲的一样。


代码理解:

主要是要搞懂,实参和形参。

调用时出现的是实参,定义时出现的是形参。

搞懂xyz和ABC的对应关系就明白代码的运行过程力。用流程图表示更简单。

小甲鱼汉诺塔代码理解相关推荐

  1. 汉诺塔代码执行的流程图

    汉诺塔是递归中的经典问题,很多人虽然懂得如何写汉诺塔的代码,但是并不能够完整地明白汉诺塔代码的调用逻辑.作者花了点时间,画了一张流程图,希望能够帮大家理解. 先上代码: #include"s ...

  2. python中汉诺塔如何理解_python汉诺塔问题的递归理解

    一.问题背景 汉诺塔问题是源于印度一个古老传说. 源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆罗门把圆盘从下 ...

  3. 汉诺塔代码图文详解(递归入门)

    游戏规则: 已知条件 存在A,B,C三根柱子,A上套有N片圆盘 (如下图) 目的 将A上的所有圆盘移到C上 约束条件 每次只能移动一片圆盘,且整个过程中只能出现小圆盘在大圆盘之上的情况 首先我们模拟( ...

  4. 汉诺塔递归算法理解及实现

    汉诺塔问题描述: A.B.C 三个桌子,其中A桌子上放了几个大小不同的盘子,盘子的排列顺序为: 从上到下,依次从小到大递增:现要求把这些盘子从 A 桌子上移动到 C 桌子上,盘子移动时有一点要求:每次 ...

  5. C语言递归小游戏—汉诺塔(hanoi)

    前言: 汉诺塔大家都不陌生吧,在猩球崛起这个电影里,人们通过凯撒玩汉诺塔知道了它的智商增高了,这个益智小游戏的规则就是: 汉诺塔(Tower of Hanoi),又称河内塔.是一个源于印度古老传说的益 ...

  6. 汉诺塔递归python搬运次数_Python3.x | 汉诺塔递归理解

    在刚学廖雪峰廖大佬的python3教程中的递归时,前面的内容理解都觉得还行,到了做汉诺塔的练习时会觉得有些发懵,后面多看几遍和练习后也就理解了. 因为遇到有人在问这个问题咋理解,因此写下我的想法,希望 ...

  7. python中汉诺塔如何理解_【Python学习之七】递归——汉诺塔问题的算法理解

    汉诺塔问题 汉诺塔的移动可以用递归函数非常简单地实现.请编写move(n, a, b, c)函数,它接收参数n,表示3个柱子A.B.C中第1个柱子A的盘子数量,然后打印出把所有盘子从A借助B移动到C的 ...

  8. Hanoi汉诺塔代码原理

    前言 最近在学Python,遇到了经典的递归问题,汉诺塔.算法原理很简单,代码实现也很简单,可谓大道至简.但是这代码的理解,却稍微让人抓狂,特别是递归调用的参数位置.故本文,重点阐述代码实现,而不注重 ...

  9. Python实现汉诺塔代码

    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) ...

最新文章

  1. RocketMQ-初体验RocketMQ(01)_RocketMQ初体验
  2. tip for interview
  3. Android测试(二)——drozer使用
  4. 安利一个超好用的Pandas数据挖掘分析神器
  5. C++中对于类来说头文件(.h)和源文件(.cpp)都应该写些什么 (类的常规创建)
  6. php email 发送,php 发送 Email
  7. Python nltk包
  8. 笔试算法题(26):顺时针打印矩阵 求数组中数对差的最大值
  9. 双非,比赛经历对找算法类工作有帮助吗?
  10. wgs84坐标系拾取工具_百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换的工具...
  11. 频谱分析仪的作用是什么?TFN FAT811手持式频谱分析仪
  12. oracle数据存储层级
  13. 小学生如何用计算机写字,小学生练字笔顺电脑文章大全短文
  14. 微信小程序——计算从今天到某天间隔多少天
  15. [转载]推荐两篇文章
  16. 京东手机电商大数据统计平台搭建
  17. 【回眸】牛客网刷刷刷!嵌入式软件中也会遇到的嵌入式硬件,通讯,通讯协议专题(一)
  18. MySQL——插入数据
  19. 6阶群的非平凡子群_当|G|=8时,群lt;G,*gt;只能有?阶非平凡子群,不能有?阶子群,平凡子群为?...
  20. [附源码]Nodejs计算机毕业设计金牛社区疫情防控系统Express(程序+LW)

热门文章

  1. 统计学——几种常见的假设检验
  2. 企业级架构之LNMP
  3. 什么是单元测试?如何做好单元测试?
  4. linux查看某个nas盘io,nas(网络附加存储)与san知识解释
  5. 数据分析 时间序列分析 概述
  6. H3C R390 G2 服务器重装系统
  7. 戴尔EMC服务器重装系统
  8. keypress,keydown,keyup的区别:
  9. 分享个龙门神途脚本辅助工具,相当于一个云端的安卓模拟器
  10. C++的html模板库——google-ctemplete