鱼C论坛

 找回密码
 立即注册
查看: 3100|回复: 16

汉诺塔问题

[复制链接]
发表于 2015-4-15 20:39:34 | 显示全部楼层 |阅读模式

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

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

x
def hanoi(n,x,y,z):
       if n == 1:
           print(x,'-->',z)
       else:
           hanoi(n-1,x,z,y)
           print(x,'-->',z)
           hanoi(n-1,y,x,z)
红色部分怎么理解?是赋值过程还是什么意思?
为什么x移动到Y,只用把Y放到最后一个参数就行?
汉诺塔原理我听懂了,这代码我不是特别理解。求详述
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-4-16 20:44:08 | 显示全部楼层
百度一下,有很多详细的解说的,这里就不造轮子了。 :)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-16 21:53:57 | 显示全部楼层
别嘛,我百度过了,都解决不了我的困惑啊。为什么函数返回的时候X,Y,Z位置换一下就行了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-4-17 00:50:02 | 显示全部楼层
lz问这个问题说明压根就一点没理解,你先别问红的是什么意思,你能解释出来

hanoi(n,x,y,z),你一定先要把这一句搞清楚了,才能进行后面的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-4-17 10:48:33 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-4-18 09:23:56 | 显示全部楼层
zd0307 发表于 2015-4-17 00:50
lz问这个问题说明压根就一点没理解,你先别问红的是什么意思,你能解释出来

hanoi(n,x,y,z),你一定先要 ...

n 是汉诺塔的塔高
X ,Y,Z不是柱子吗。。。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-4-18 09:30:38 | 显示全部楼层
FavouritePython 发表于 2015-4-18 09:23
n 是汉诺塔的塔高
X ,Y,Z不是柱子吗。。。。。

x是指的起始柱,也就是玩游戏所有N个都在“x”这个位置上面准备开始玩
y是指的中间柱,也就是说在“y”这个位置上的压根最后上面什么都没有,只是作为中间站的
z是指的结束柱,最终你要做的是把所有的N都移位到了“z”这个位置

但是x,y,z都是变量,而不是代表x,y,z这三根柱子,因为你在玩的过程中,起始柱,中间柱和结束柱是一直都在互相转化的,
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-4-18 09:36:41 | 显示全部楼层
hanoi(n-1,x,z,y)
print(x,'-->',z)
hanoi(n-1,y,x,z)
===================
所以这三步的意思就是说:
hanoi(n-1,x,z,y)-----先把n-1个柱子(也就是除了最底下那个)从x柱子上面以z为中间柱移动到y上面
print(x,'-->',z)------是说把最底下的那个柱子从x移动到z
hanoi(n-1,y,x,z)-----是说刚才n-1个柱子不是从x移动到了y了嘛(第一步的时候),所以这时候y就成了起始柱,x成了中间柱,z成了结束柱……

lz能否明白了???
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

 楼主| 发表于 2015-4-18 13:20:08 | 显示全部楼层
噢~~~好像明白点了,谢谢啦
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-5-30 20:18:16 | 显示全部楼层
学习学习
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-5-30 21:03:32 | 显示全部楼层
道理是这样的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-5-31 09:23:35 | 显示全部楼层
学习学习
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-11 21:35:13 | 显示全部楼层
云里雾里
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-13 16:29:19 | 显示全部楼层
注重表达结果,而不是过程
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-5 13:30:34 | 显示全部楼层
zd0307 发表于 2015-4-18 09:36
hanoi(n-1,x,z,y)
print(x,'-->',z)
hanoi(n-1,y,x,z)

厉害厉害 这样讲解似乎就更懂了一点
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-8 09:48:40 | 显示全部楼层
学习了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-11 17:15:46 | 显示全部楼层
zd0307 发表于 2015-4-18 09:36
hanoi(n-1,x,z,y)
print(x,'-->',z)
hanoi(n-1,y,x,z)

看了这个解释,明白许多了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-26 05:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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