汉诺塔问题

def move(n,a,b,c):
if n == 1:
print(a,"--->",c)
else:
move(n-1,a,c,b)
print(a,"--->",c)
move(n-1,b,a,c)
move(4,"A","B","C")

 

 

n=4
arr11 = arr1 = [_ for _ in range(n,0,-1)]
arr22 = arr2 = []
arr33 = arr3 = []
def move(n,arr1,arr2,arr3):
if n==1: # 如果只有一个 移动方法一定是由arr1到arr3
arr3.append(arr1.pop()) #arr1 移动的arr3
print(arr11,arr22,arr33,"====",arr1,arr2,arr3) #打印,参考。
else:
move(n-1,arr1,arr3,arr2) # 此时arr2为空元素,将n-1个元素移动到arr2中。
arr3.append(arr1.pop()) # 将最后一个元素,移动到arr3中
print(arr11,arr22,arr33,"====",arr1,arr2,arr3) #打印,参考
# 此时,arr1,为空,而arr2里面有n-1个元素。重新调用递归,将剩余的元素移动到arr3中(此时剩余元素有n-1个)即,
# 将arr2中的元素移动到arr3中。
move(n-1,arr2,arr1,arr3)
move(n,arr1,arr2,arr3)

posted @ 2020-03-31 12:51  椰汁面包  阅读(89)  评论(0编辑  收藏  举报