def simple(list1, a1=0,type='A'):
a = 0
if a == len(list1):
if a == 0:
print("{}:[ ]".format(type))
else:
print(']')
return
a = a1
for i in range(1,len(list1)-a1):
if list1[i+a1-1]-list1[i+a1] == 1:
a += 1
else:
break
if a1 == 0:
if a != a1:
print("{}:[{}至{}".format(type, list1[a1], list1[a+a1]), end='')
if a == len(list1)-1:
print("]")
return
a1 = a + a1 + 1
else:
print("{}:[{}".format(type,list1[a1]), end='')
if a == len(list1)-1:
print("]")
return
a1 = a1 + 1
else:
if a == 0 or a == a1:
if a >= len(list1):
print(",{}]".format(list1[(len(list1)-1)]))
return
if a == len(list1) - 1:
print(",{}".format(list1[a]), end='')
print("]")
return
print(",{}".format(list1[a]), end='')
a1 = a1 + 1
else:
print(",{}至{}".format(list1[a1], list1[a]), end='')
if a == len(list1)-1:
print("]")
return
a1 = a + a1 + 1
simple(list1, a1)
def hannois(num,src,dst,temp=None):
if num < 1:
return
global times
hannois(num-1,src,temp,dst)
print('第{0}次移动:{1}==>{2}'.format(times,src,dst))
towers[dst].append(towers[src].pop())
for tower in 'ABC':
simple(list(towers[tower]), 0, tower)
times +=1
hannois(num-1, temp, dst, src)
times = 1
n = 10
towers ={'A':list(range(n,0,-1)),
'B':[],
'C':[]}
hannois(n, 'A', 'C', 'B')
效果如下: