hanota(n-1, zhu1, zhu3, zhu2)
print (zhu1+' ==> '+zhu3)
hanota(n-1, zhu2, zhu1, zhu3)
n=int(input('munber of hanota'))
hanota(n,'1柱子','2柱子','3柱子')
n=2时:
hanota(2,1,2,3)
n=2≠1
hanota(1,1,3,2)
n=1
print(1-2)
print(1=3)
hanota(1,2,1,3)
print(2-3)
对比
1柱子 --> 2柱子
1柱子 ==> 3柱子
2柱子 --> 3柱子
n=3时
hanota(3,1,2,3)
n=3≠1,进入else
hanota(2,1,3,2)
n=2≠1,进入else
hanota(1,1,2,3)
n=1,进入if
print(1--3)
print(1==2)
hanota(2,2,1,3)
n=2≠1,进入else
hanota(1,2,3,1)
n=1,进入if
print(2-1)
print(2=3)
hanota(1,1,2,3)
print(1-3)
1柱子 --> 3柱子
1柱子 ==> 2柱子
3柱子 --> 2柱子
1柱子 ==> 3柱子
2柱子 --> 1柱子
2柱子 ==> 3柱子
1柱子 --> 3柱子
我们知道:
如果汉诺塔只有一层:那么就是从1柱子==》3柱子
如果汉诺塔有两层:那么:
1柱子 --> 2柱子(小的)
1柱子 ==> 3柱子(大的)
2柱子 --> 3柱子(小的)
即:先把小的放到2柱子上,再把大的放到3柱子上。
如果汉诺塔有三层:那么:
把中的和小的看成一个小的。
先把中的和小的,从1柱子-->2柱子上;
再把大的从1柱子--3柱子上。
再把中的和小的--3柱子上。
由于大的永远在最底下,同时目标柱子不变。
在移动中的和小的时候,把他们所在的2柱子看做主柱子,把1柱子看做辅助柱。