一、什么是汉诺塔?
就是把A塔是所有东西搬到C塔,B塔为辅助,下面到上面依次从大到小,且每一次只能移动一个。
假设A塔一开始有三层,那我们要怎么把他移动到C呢?
二、汉诺塔原理
1、把1和2看整体移动到B,再把3移动到C,接着把B的1和2移动到C就完成啦!当然这是编程的思路,而现实当中是不可以的,因为一次只能移动一个,请看正确的思路:
(1)我们先把1移到C塔
(2)再把2移到B塔
(3)再把1移到B塔
(4)把3移到C塔
(5)把1移到A塔
(6)把2移动C塔
(7)把1移动到C塔。此时所有的步骤结束,花了7步
三、pytho代码编写
def hannuota(n,a,b,c): # n为层次,塔a、塔b、塔c
if n==1: # 当只有一层直接搬到塔c
print(a,"移到",c)
else:
hannuota(n-1,a,c,b) # 除了最底层,把其他层看成一个整体,从a搬到b,c为经过,最后不放入
print(a,"移到",c)
hannuota(n-1,b,a,c) # 除了最底层,把其他层看成一个整体,从b搬到c,a为经过,最后不放入
hannuota(3,"A","B","C")
为什么3行else代码就可以实现了呢?而现实要7步,因为代码有递归作用,他执行也是上面的7步,只是我们看不到,详细请往下看: