|
20鱼币
- def haoni(n,x,y,z):
- if n==1:
- print(x,"-->",z)
- else:
- haoni(n-1,x,z,y)
- print(x,'-->',z)
- haoni(n-1,y,x,z)
- n=int(input("请输入汉诺塔的层数"))
- haoni(n,'A','B','C')
复制代码
不懂原理以及层数与参数是如何联系在一起的
规则是一次只能移动一个,递归是如何实现的
本帖最后由 N781791878 于 2022-8-3 19:08 编辑
看一下这样能不能理解:
hanoi(n,x,y,z)
==
hanoi(层数,圆盘所在的柱子,需要借助的柱子,目标柱子)  =======>就是不要看3个柱子的位置,只看3个柱子之间的关系。
#########################################################
#总的思路就是 (1:)假设有n个盘子,先把最底下的盘子(n)移到 "Z" 上;
#(2:)想要达成第一步,就要把上面的(n-1)个盘子移到 "Y" 上面
#(3:)以此类推
- def haoni(n,x,y,z): #要把n个盘子从"X"移到"Z"
- if n==1:
- print(x,"-->",z) #当层数==1的时候:只有一个盘子需要移动,直接从 "X" 到 "Z" 就可以了
- else:
- haoni(n-1,x,z,y) #要把(n-1)个盘子从"X"移到"Y"
- print(x,'-->',z)
- haoni(n-1,y,x,z) #要把(n-1)个盘子从"Y"移到"Z"
- n=int(input("请输入汉诺塔的层数"))
- haoni(n,'A','B','C')
复制代码
|
|