|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
Q:请教一下汉诺塔的代码怎么理解,自己看不明白
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')
本帖最后由 沉默的人e 于 2020-2-16 19:14 编辑
现在给出one possible version
- def hanoi(n,x,y,z):#n是指片片的个数,x是起始柱子,y是中介柱子,z是目标柱子
- if n == 1:
- print(x,'-->',z)# 只有一个的时候,直接将起始柱子移动到目标柱子
- else:# 以下为具体步骤,
- hanoi(n-1,x,z,y)# 现在执行hanoi函数,将起始柱子上的n-1个柱子,以目标柱子为中介,移动到中介柱子上。
- print(x,'-->',z)#将最底下的最后一个盘子从起始柱子移动到目标柱子上。
- hanoi(n-1,y,x,z)#执行hanoi函数,以中介柱子为起始,以起始柱子为中介,以目标柱子为目标,移动到目标柱子上。
复制代码
|
|