小甲鱼汉诺塔代码理解
来源于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的对应关系就明白代码的运行过程力。用流程图表示更简单。
小甲鱼汉诺塔代码理解相关推荐
- 汉诺塔代码执行的流程图
汉诺塔是递归中的经典问题,很多人虽然懂得如何写汉诺塔的代码,但是并不能够完整地明白汉诺塔代码的调用逻辑.作者花了点时间,画了一张流程图,希望能够帮大家理解. 先上代码: #include"s ...
- python中汉诺塔如何理解_python汉诺塔问题的递归理解
一.问题背景 汉诺塔问题是源于印度一个古老传说. 源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆罗门把圆盘从下 ...
- 汉诺塔代码图文详解(递归入门)
游戏规则: 已知条件 存在A,B,C三根柱子,A上套有N片圆盘 (如下图) 目的 将A上的所有圆盘移到C上 约束条件 每次只能移动一片圆盘,且整个过程中只能出现小圆盘在大圆盘之上的情况 首先我们模拟( ...
- 汉诺塔递归算法理解及实现
汉诺塔问题描述: A.B.C 三个桌子,其中A桌子上放了几个大小不同的盘子,盘子的排列顺序为: 从上到下,依次从小到大递增:现要求把这些盘子从 A 桌子上移动到 C 桌子上,盘子移动时有一点要求:每次 ...
- C语言递归小游戏—汉诺塔(hanoi)
前言: 汉诺塔大家都不陌生吧,在猩球崛起这个电影里,人们通过凯撒玩汉诺塔知道了它的智商增高了,这个益智小游戏的规则就是: 汉诺塔(Tower of Hanoi),又称河内塔.是一个源于印度古老传说的益 ...
- 汉诺塔递归python搬运次数_Python3.x | 汉诺塔递归理解
在刚学廖雪峰廖大佬的python3教程中的递归时,前面的内容理解都觉得还行,到了做汉诺塔的练习时会觉得有些发懵,后面多看几遍和练习后也就理解了. 因为遇到有人在问这个问题咋理解,因此写下我的想法,希望 ...
- python中汉诺塔如何理解_【Python学习之七】递归——汉诺塔问题的算法理解
汉诺塔问题 汉诺塔的移动可以用递归函数非常简单地实现.请编写move(n, a, b, c)函数,它接收参数n,表示3个柱子A.B.C中第1个柱子A的盘子数量,然后打印出把所有盘子从A借助B移动到C的 ...
- Hanoi汉诺塔代码原理
前言 最近在学Python,遇到了经典的递归问题,汉诺塔.算法原理很简单,代码实现也很简单,可谓大道至简.但是这代码的理解,却稍微让人抓狂,特别是递归调用的参数位置.故本文,重点阐述代码实现,而不注重 ...
- 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) ...
最新文章
- RocketMQ-初体验RocketMQ(01)_RocketMQ初体验
- tip for interview
- Android测试(二)——drozer使用
- 安利一个超好用的Pandas数据挖掘分析神器
- C++中对于类来说头文件(.h)和源文件(.cpp)都应该写些什么 (类的常规创建)
- php email 发送,php 发送 Email
- Python nltk包
- 笔试算法题(26):顺时针打印矩阵 求数组中数对差的最大值
- 双非,比赛经历对找算法类工作有帮助吗?
- wgs84坐标系拾取工具_百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换的工具...
- 频谱分析仪的作用是什么?TFN FAT811手持式频谱分析仪
- oracle数据存储层级
- 小学生如何用计算机写字,小学生练字笔顺电脑文章大全短文
- 微信小程序——计算从今天到某天间隔多少天
- [转载]推荐两篇文章
- 京东手机电商大数据统计平台搭建
- 【回眸】牛客网刷刷刷!嵌入式软件中也会遇到的嵌入式硬件,通讯,通讯协议专题(一)
- MySQL——插入数据
- 6阶群的非平凡子群_当|G|=8时,群lt;G,*gt;只能有?阶非平凡子群,不能有?阶子群,平凡子群为?...
- [附源码]Nodejs计算机毕业设计金牛社区疫情防控系统Express(程序+LW)