猪猪虾 发表于 2020-3-22 15:37:16

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

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 15:46:29

你真的是打死也不知道要把代码放进代码块里。

我不知道这是什么意思,但我知道这个程序一定出错
def hanoi(n,x,y):这里函数只接受三个参数hanoi(n-1,x,z,y)提供四个参数,一定出错

猪猪虾 发表于 2020-3-22 15:56:26

本帖最后由 猪猪虾 于 2020-3-22 15:58 编辑

永恒的蓝色梦想 发表于 2020-3-22 15:46
你真的是打死也不知道要把代码放进代码块里。

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


def hanoi(n,x,y,z):
    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 15:57:07

猪猪虾 发表于 2020-3-22 15:56


啊,这个是老师上课说的内容,我只是抄了一遍,不知道什么意思,四个参数老师运行是对的

猪猪虾 发表于 2020-3-22 15:59:37

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

是粘贴的问题,我以后注意,但是老师确实是用了四个参数,我没太懂参数交换位置的意思

永恒的蓝色梦想 发表于 2020-3-22 16:09:43

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

发题目

猪猪虾 发表于 2020-3-22 16:13:12

永恒的蓝色梦想 发表于 2020-3-22 16:09
发题目

题目是汉诺塔,三根柱子,将一根子上的圆盘全部移动到另一根柱子上,一次只能移动一个圆盘,并且小的圆盘必须在大的圆盘上方

永恒的蓝色梦想 发表于 2020-3-22 16:27:46

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

函数输入又是什么呢?

coolsummer2080 发表于 2020-3-22 20:53:33

hanoi(n-1,x,z,y)
表示递归调用将前n-1个盘子从x上移动到Y上,z放在中间,表示借用z这个柱子。
如果明白我说的意思,{:5_109:}给个最佳答案呗。{:5_92:}

猪猪虾 发表于 2020-3-22 21:27:09

永恒的蓝色梦想 发表于 2020-3-22 16:27
函数输入又是什么呢?

输入,n是圆盘的个数,x,y,z表示从左到右的的三根柱子

猪猪虾 发表于 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,可是为什么这样换参数位置

coolsummer2080 发表于 2020-3-22 21:32:14

这里的第2个参数就是待移动盘子下的柱子,第3个参数就是借用的柱子,第4个参数就是目标柱子。

chai016 发表于 2020-3-22 21:49:03

你可以试着想一下 n=2的时候程序流程而且要改一下代码(n,'1','2','3')    调用参数时用(2,‘1’,‘2’,‘3’)你就好想了    甲鱼的课都用的XYZ   确实具有一定的迷惑性

猪猪虾 发表于 2020-3-22 21:54:45

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

蟹蟹

coolsummer2080 发表于 2020-3-22 22:22:50

感谢感谢。{:5_109:}最近鱼贝好紧张!

thesun91 发表于 2022-1-9 10:38:05

位置变化的意思,我认为是为了实参的打印显示问题,其实每调用一次hanoi(),走的步骤都是第二个位置的参数走到第四个位置的,你把他想象成位置,x,y,z只是用来表示1号柱子,2号柱子,3号柱子。
页: [1]
查看完整版本: 25讲,汉诺塔,hanoi(n-1,x,z,y) ,y,z换位置是什么意思