|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 kaozhaohun 于 2022-2-10 20:58 编辑
- def hanoi(n,x,y,z):
- if n==1:
- print(x,"-->",z)
- else:
- hanoi(n-1,x,z,y)
- print(x,"-->",z)
- hanoi(n-1,y,x,z)
- n = int(input("请输入层数"))
- hanoi(n,"x","y","z")
复制代码 ,
请输入层数3
x --> z
x --> y
z --> y 搞不懂"z"是怎么替代x的,我找了半天视频没一个人说过这问题,有谁能说说吗?
x --> z
y --> x
y --> z
x --> z
n代表几个圆盘,x代表第一条柱子,y代表第二条柱子,z代表第三条柱子
目的:把所有的圆盘的顺序原封不动地移动到第三根柱子
如果只有一个圆盘,则直接从第一根柱子移动到第三根柱子,
- if n==1:
- print(x,"-->",z)
复制代码
x 为第二个形参,z为第四个形参,也就是说是由第二个形参移动到第四个形参
如果不只有一个圆盘,则将除最底下的圆盘外的其它圆盘移动到第二根柱子,即y柱,
- hanoi(n-1,x,z,y) # 第二个形参移动到第四个形参,x移动到y
复制代码
然后将最底下的移动到第三根柱子,即z柱
最后将第二根柱子上的圆盘移动到第三根柱子,即y柱移动到z柱,所以此时由y充当第二个形参,z充当第四个形参,因为圆盘数始终充当第一个形参,剩下的那根柱子就是第三个形参了
- hanoi(n-1,y,x,z) # y柱移动到z柱
复制代码
|
|