鸷爱之殇 发表于 2020-7-2 18:50:37

汉诺塔游戏

想求助各位大神,在汉诺塔游戏中为什么print (x,"--->",z)可以代表将最底下一个盘子从x移动到z上?print不是只是一个打印程序吗?将括号里面的打印出来?

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)#将最底下的一个盘子从x移动到z上
      hanoi(n-1, y, x, z) #将y上的n-1个盘子移动到z上

n=int(input('请输入汉诺塔的层数:'))
hanoi(n,'x', 'y', 'z')

Twilight6 发表于 2020-7-2 18:52:18



print 确实是打印,只是单纯的将你的移动结果打印出来,并没有移动的作用

移动过程是在递归过程,比如这里的:

hanoi(n-1, x, z, y)

hanoi(n-1, y, x, z)

liuzhengyuan 发表于 2020-7-2 18:52:34

本帖最后由 liuzhengyuan 于 2020-7-2 19:08 编辑

逗号(“,”)相当于“拼接”

把 x 变量的值、字符串“-->”、以及 z 变量的值 拼接起来

是函数中的 hanoi 函数实现了移动

谈如何简单懒汉式理解汉诺塔
https://fishc.com.cn/thread-126371-1-1.html
(出处: 鱼C论坛)

(原创首发)递归典型——汉诺塔问题详解
https://fishc.com.cn/thread-116890-1-1.html
(出处: 鱼C论坛)
页: [1]
查看完整版本: 汉诺塔游戏