python递归实现汉诺塔

实现思路:

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)

你可能感兴趣的:(python学习)