|
发表于 2021-7-27 17:07:21
|
显示全部楼层
我也想要分享一下,我的运行后也很直观!
n = int(input('请输入汉诺塔的层数:'))
list1 = list(range(1,n+1))
x1 = list1.copy(); y1 = []; z1 = []
print('\n初始:',x1,y1,z1,'\n')
i = 0;i1 = 0;i2 = 0;i3 = 0;i4 = 0;i5 = 0;i6 = 0
def state_print(n,x,y,z):
global i,i1,i2,i3,i4,i5,i6
if x=='X'and z=='Y':
y1.insert(0,x1[0]);x1.pop(0)
i1 += 1
print('结果:',x1,y1,z1,'\n')
if x=='Y'and z=='X':
x1.insert(0,y1[0]);y1.pop(0)
i2 += 1
print('结果:',x1,y1,z1,'\n')
if x=='X'and z=='Z':
z1.insert(0,x1[0]);x1.pop(0)
i3 += 1
print('结果:',x1,y1,z1,'\n')
if x=='Z'and z=='X':
x1.insert(0,z1[0]);z1.pop(0)
i4 += 1
print('结果:',x1,y1,z1,'\n')
if x=='Y'and z=='Z':
z1.insert(0,y1[0]);y1.pop(0)
i5 += 1
print('结果:',x1,y1,z1,'\n')
if x=='Z'and z=='Y':
y1.insert(0,z1[0]);z1.pop(0)
i6 += 1
print('结果:',x1,y1,z1,'\n')
i = i1+i2+i3+i4+i5+i6
def hanoi(n, x='X', y='Y', z='Z'):
global i
list1 = list(range(1,n+1))
if n == 1:
print('第%d步:'%(i+1),x, ' --> ', z)
state_print(n,x,y,z)
else:
hanoi(n-1, x, z, y)
print('第%d步:'%(i+1),x, ' --> ', z)
state_print(n,x,y,z)
hanoi(n-1, y, x, z)
hanoi(n) |
|