实现思路:
1.将A上 n-1个移动到B
2.将A上最后一个移动到C
3.将B上 n-1个移动到A
4.将B上最后一个移动到C
重复上面步骤即可
python代码实现如下:
#全局变量cnt 统计移动次数
global cnt
cnt = 0
def move(x, y):
global cnt #再次声明,表示在这里使用的是全局变量,而不是局部变量
cnt = cnt + 1 #执行一次move函数,cnt加一
print('%s -> %s' %(x, y))
def Han(n, a, b, c):
if n == 1:
move(a, c)
else:
Han(n-1, a, c, b)
move(a, c)
Han(n-1, b, a, c)
return cnt
#执行部分
if __name__ == "__main__":
ret = Han(7, 'a', 'b', 'c')
print('移动次数为:', ret)