鱼C论坛

 找回密码
 立即注册
查看: 5227|回复: 7

[已解决]零基础入门学习Python中24讲对汉罗塔游戏没懂,求助

[复制链接]
发表于 2018-2-2 18:13:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
问题如下:
1.else后面到底是怎么运行的
2.函数后面x,y,z交换顺序有什么作用
3.调用函数时为什么要加引号
最佳答案
2018-2-2 20:12:50
本帖最后由 铁棍阿童木 于 2018-2-2 20:15 编辑

首先你要理解这个游戏怎么玩,借用你的代码来解释:
1、x y z 分别代表三根轴(或者针),x 代表圆盘最初所在的轴,z 表示最后需要到达的轴;y代表过渡用的;
2、n代表有多少个圆盘需要移动;
|-- 如果 n == 1 也就是只有一个圆盘需要移动,那么直接从 x 轴移动到 z 轴就行了 --> printg(x," -->",z)
|-- 否则 递归调用自身 youxi(n-1, x,z,y)  这里为了把圆盘转移到 z 上去,先要把 n - 1个 圆盘移动到 y 上面才行
            print(x,"-->",z)    # 上一步递归完成,最后把剩余的最后一个圆盘从 x 移动到 z
            youxi(n-1, y,x,z)  #  然后再递归调用,把在 y 轴上的 n - 1个圆盘借助 x 轴再移动到 z
            (这时就完成了圆盘在三根轴上面的来回移动,并且完整的从 x 轴 移动到了 z 轴)
所以,x,y,z需要在调用时交换位置


最后,加括号表示函数被调用,Python解释器将执行函数内部的代码;如果不加括号,表示函数对象,是存在内存中的一个对象而已,Python不会执行内部代码。

问题是函数中x,y,z交换位置是为什么,最后调用函数为什么要用引号

问题是函数中x,y,z交换位置是为什么,最后调用函数为什么要用引号
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-2-3 16:32:40 | 显示全部楼层
铁棍阿童木 发表于 2018-2-2 20:12
首先你要理解这个游戏怎么玩,借用你的代码来解释:
1、x y z 分别代表三根轴(或者针),x 代表圆盘最初 ...

我懂了,就是定义函数的时候x,y,z没加引号表示形参,加了引号就是实参,然后将其付给形参
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-23 05:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表