汉诺塔问题:如果将n个盘子(由小到大)从a通过b,搬到c,搬运过程中不能出现小盘子在大盘子下面的情况。
思路分析:假设前要移动第100个盘子,分两步走,移动第99个;再移动第100个;而要移动第99个,同样分两部,移动第98个,再移动第99个,以此类推;
if(n>1)
{
1、先将A柱上的前n-1个盘子从A借助C移动到B;
2、把A柱子上的第n个盘子直接移动到C;
3、再将B柱子上的n-1个盘子借助A移动到C;
}
1 #!/usr/bin/python 2 #encoding=utf-8 3 4 def hanoi(n, x, y, z): //x表示第x根柱子,y表示第y根柱子,z表示第z根柱子 5 if n==1: 6 print x,'-->',z 7 else: 8 #将前n-1个盘子移动到y: 9 hanoi(n-1, x, z, y) 10 print x, '-->', z #x柱子移动到z上 11 #将y上的n-1个盘子移动到z上 12 hanoi(n-1, y, x, z) 13 import sys 14 15 hanoi(int(sys.argv[1]), 'x', 'y', 'z')