鱼C论坛

 找回密码
 立即注册
查看: 3380|回复: 4

[已解决]关于汉诺塔的问题

[复制链接]
发表于 2022-8-3 17:03:09 | 显示全部楼层 |阅读模式
20鱼币
  1. def haoni(n,x,y,z):
  2.     if n==1:
  3.         print(x,"-->",z)
  4.     else:
  5.         haoni(n-1,x,z,y)
  6.         print(x,'-->',z)
  7.         haoni(n-1,y,x,z)

  8. n=int(input("请输入汉诺塔的层数"))
  9. haoni(n,'A','B','C')
复制代码

不懂原理以及层数与参数是如何联系在一起的
规则是一次只能移动一个,递归是如何实现的
最佳答案
2022-8-3 17:03:10
本帖最后由 N781791878 于 2022-8-3 19:08 编辑

看一下这样能不能理解:
hanoi(n,x,y,z)
==
hanoi(层数,圆盘所在的柱子,需要借助的柱子,目标柱子)  =======>就是不要看3个柱子的位置,只看3个柱子之间的关系。

#########################################################
#总的思路就是 (1:)假设有n个盘子,先把最底下的盘子(n)移到 "Z" 上;
#(2:)想要达成第一步,就要把上面的(n-1)个盘子移到 "Y" 上面
#(3:)以此类推


  1. def haoni(n,x,y,z):        #要把n个盘子从"X"移到"Z"
  2.     if n==1:
  3.         print(x,"-->",z)     #当层数==1的时候:只有一个盘子需要移动,直接从  "X"  到  "Z"  就可以了
  4.     else:
  5.         haoni(n-1,x,z,y)    #要把(n-1)个盘子从"X"移到"Y"
  6.         print(x,'-->',z)
  7.         haoni(n-1,y,x,z)    #要把(n-1)个盘子从"Y"移到"Z"

  8. n=int(input("请输入汉诺塔的层数"))
  9. haoni(n,'A','B','C')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-20 03:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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