|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
def han(n,x,y,z):
if n==1:
print(x,'-->',z)
else:
han(n-1,x,z,y)
print(x,'-->',z)
han(n-1,y,x,z)
n=int(input('请输入汉诺塔的层数:'))
han(n,'X','Y','Z')
还是看不懂的话,那就来点干货:
(1) n == 1
第1次 1号盘 X---->Z sum = 1 次
(2) n == 2
第1次 1号盘 X---->Y
第2次 2号盘 X---->Z
第3次 1号盘 Y---->Z sum = 3 次
(3)n == 3
第1次 1号盘 X---->Z
第2次 2号盘 X---->Y
第3次 1号盘 Z---->Y
第4次 3号盘 X---->Z
第5次 1号盘 Y---->X
第6次 2号盘 Y---->Z
第7次 1号盘 X---->Z sum = 7 次
不难发现规律:1个圆盘的次数 2的1次方减1
2个圆盘的次数 2的2次方减1
3个圆盘的次数 2的3次方减1
。 。 。 。 。
n个圆盘的次数 2的n次方减1
故:移动次数为:2 ^ n - 1
|
|