n个圆盘移动问题可以分解为两次n-1个圆盘移动的问题。其中
递归出口----->n = 1
递归程序自相似部分:(用函数描述移动)
hanoi(n-1, a , b , c)将a杆上n-1个圆盘经b移动到c杆
move(a , b)将a杆上剩下最大的一个盘移动到b杆
hanoi(n-1 , c , a ,b)将c杆上n-1个圆盘经c移动到b杆
代码:
def hanoi(n,a,b,c):
if n<0:
print("请输入一个大于0的数!")
elif n==1:
print(a,"-->",b)
else:
hanoi(n-1,a,b,c)
print(a,"-->",b)
hanoi(n-1,c,a,b)
n=int(input('请输入圆盘数目n:'))
step=2**n-1
print(hanoi(n,'a','b','c'))
print("总共移动步数为:{}".format(step))