代码:
结果:
解决汉诺塔问题分为三步:
解析:
1、当有n个盘的时候,我们的目的是先把起始盘‘x’上最大的盘移动到目的盘‘z’上,于是我们首先需要借助一个辅助盘‘y’,先将起始盘‘x’上的n-1个盘移动到辅助盘‘y’上,此时起始盘‘x’上只有一个盘,于是我们再将第n个盘移动到目的盘‘z’上(也就是说当起始盘‘x’上的盘数为1时,我们是直接将其移动到目的盘‘z’),最后我们再将辅助盘‘y’上的n-1个盘,移动到目的盘‘z’上。
2、而当我们把辅助盘‘y’上的n-1个盘移动到目的盘‘z’上的时候,我们将此时的辅助盘‘y’看作为(1)中起始盘‘x’,目的盘还是‘z’,以此如同(1)中的过程来移动盘--->(n-1)、(n-2)、(n-3)·······直到起始盘上的盘数为1.这种方法也就是递归
过程:
1、han(n-1,x,z,y)#将n-1个盘移动到‘y’上
2、print(x,'---->',z)当起始盘上的盘数为1时,我们将其移动到目的盘
3、han(n-1,y,x,z)#将n-1个盘移动到'z'上
....注:文中的x,y,z带有单引号,需自己详细理解,不可望文生义。