汉诺塔 python版

 汉诺塔问题:如果将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')

 

posted on 2015-11-28 21:01  阳台  阅读(234)  评论(0编辑  收藏  举报

导航