鱼C论坛

 找回密码
 立即注册
查看: 1694|回复: 15

[已解决]25讲,汉诺塔,hanoi(n-1,x,z,y) ,y,z换位置是什么意思

[复制链接]
发表于 2020-3-22 15:37:16 | 显示全部楼层 |阅读模式

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

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

x
def hanoi(n,x,y):
    if n==1:
        print(x,'-->',z)
    else:
        hanoi(n-1,x,z,y)   #将前n-1个盘子从x上移动到Y上
        print(x,'-->',z)
        hanoi(n-1,y,x,z)
最佳答案
2020-3-22 21:32:14
这里的第2个参数就是待移动盘子下的柱子,第3个参数就是借用的柱子,第4个参数就是目标柱子。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-22 15:46:29 | 显示全部楼层
你真的是打死也不知道要把代码放进代码块里。

我不知道这是什么意思,但我知道这个程序一定出错
  1. def hanoi(n,x,y):
复制代码
这里函数只接受三个参数
  1. hanoi(n-1,x,z,y)
复制代码
提供四个参数,一定出错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

 楼主| 发表于 2020-3-22 15:56:26 | 显示全部楼层
本帖最后由 猪猪虾 于 2020-3-22 15:58 编辑
永恒的蓝色梦想 发表于 2020-3-22 15:46
你真的是打死也不知道要把代码放进代码块里。

我不知道这是什么意思,但我知道这个程序一定出错

  1. def hanoi(n,x,y,z):
  2.     if n==1:
  3.         print(x,'-->',z)
  4.     else:
  5.         hanoi(n-1,x,z,y)   #将前n-1个盘子从x上移动到Y上
  6.         print(x,'-->',z)
  7.         hanoi(n-1,y,x,z)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-22 15:57:07 | 显示全部楼层

啊,这个是老师上课说的内容,我只是抄了一遍,不知道什么意思,四个参数老师运行是对的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-22 15:59:37 | 显示全部楼层
猪猪虾 发表于 2020-3-22 15:57
啊,这个是老师上课说的内容,我只是抄了一遍,不知道什么意思,四个参数老师运行是对的

是粘贴的问题,我以后注意,但是老师确实是用了四个参数,我没太懂参数交换位置的意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-22 16:09:43 | 显示全部楼层
猪猪虾 发表于 2020-3-22 15:59
是粘贴的问题,我以后注意,但是老师确实是用了四个参数,我没太懂参数交换位置的意思

发题目
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-22 16:13:12 | 显示全部楼层

题目是汉诺塔,三根柱子,将一根子上的圆盘全部移动到另一根柱子上,一次只能移动一个圆盘,并且小的圆盘必须在大的圆盘上方
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-22 16:27:46 | 显示全部楼层
猪猪虾 发表于 2020-3-22 16:13
题目是汉诺塔,三根柱子,将一根子上的圆盘全部移动到另一根柱子上,一次只能移动一个圆盘,并且小的圆盘 ...

函数输入又是什么呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-22 20:53:33 | 显示全部楼层
hanoi(n-1,x,z,y)
表示递归调用将前n-1个盘子从x上移动到Y上,z放在中间,表示借用z这个柱子。
如果明白我说的意思,给个最佳答案呗。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-22 21:27:09 | 显示全部楼层

输入,n是圆盘的个数,x,y,z表示从左到右的的三根柱子
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-22 21:28:24 | 显示全部楼层
coolsummer2080 发表于 2020-3-22 20:53
hanoi(n-1,x,z,y)
表示递归调用将前n-1个盘子从x上移动到Y上,z放在中间,表示借用z这个柱子。
如果明白 ...

您可以换个说法吗,我知道要借用z,可是为什么这样换参数位置
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-22 21:32:14 | 显示全部楼层    本楼为最佳答案   
这里的第2个参数就是待移动盘子下的柱子,第3个参数就是借用的柱子,第4个参数就是目标柱子。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-22 21:49:03 | 显示全部楼层
你可以试着想一下 n=2的时候程序流程  而且要改一下代码(n,'1','2','3')    调用参数时用(2,‘1’,‘2’,‘3’)  你就好想了    甲鱼的课  都用的XYZ   确实具有一定的迷惑性
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-22 21:54:45 | 显示全部楼层
chai016 发表于 2020-3-22 21:49
你可以试着想一下 n=2的时候程序流程  而且要改一下代码(n,'1','2','3')    调用参数时用(2,‘1’,‘2 ...

蟹蟹
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-22 22:22:50 | 显示全部楼层
感谢感谢。最近鱼贝好紧张!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-1-9 10:38:05 | 显示全部楼层
位置变化的意思,我认为是为了实参的打印显示问题,其实每调用一次hanoi(),走的步骤都是第二个位置的参数走到第四个位置的,你把他想象成位置,x,y,z只是用来表示1号柱子,2号柱子,3号柱子。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-13 08:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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