汉罗塔怎么玩?
汉罗塔起源于一个古老的印度传说。汉诺塔游戏常用于程序设计中的经典递归问题、小学奥林匹克数学中的典型问题以及数学的创新教学中。汉洛塔的玩法如下:
1.将三根柱子排成之字形,将所有的圆盘按降序放在A柱上,根据圆盘的数量确定柱子放电的顺序。
2.如果n是偶数,则顺时针放置如下:ABC;如果n是奇数,它将被顺时针放置为:ACB。这样经过反复测试,河内塔的移动就可以按照规定完成了。
3.所以很简单,结果就是按照移动规则把金块往一个方向移动:比如河内三阶塔的移动:A→C,A→B,C→B,A→C,B,B→A → C。
汉罗塔算法简介
其实算法很简单。当板数为n时,移动次数应该等于2n–1(有兴趣可以自己证明)。后来,一位美国学者发现了一种出乎意料的简单方法,只需要依次两步。首先将三列按顺序排列成成品字体,将所有圆盘按降序放在A列上,根据圆盘数量确定列排列顺序:若n为偶数,A B C;顺时针放置;如果n是奇数,顺时针依次放A C B。
(1)将圆盘1从当前列顺时针移动到下一列,即当n为偶数时,若圆盘1在A列,则移动到B列;如果磁盘1在B列,则将其移动到C;如果光盘1在C列,则将其移动到A..
(2)然后,将另外两列上的可移动磁盘移动到新列。即,将非空列上的光盘移动到空列,当两列都不为空时,移动较大的光盘。此步骤不指定要移动哪个磁盘。你可能觉得有很多可能,其实不是,唯一能实施的行动就是。
(3)重复1和2的操作,最终按照规定完成河内塔的移动。
所以结果很简单,就是按照移动规则把金块往一个方向移动,比如汉诺塔三阶塔的移动:A → C,A→B,C→B,A→C,B→A→C,A→C,A→C,A→C .汉诺塔问题也是编程中经典的递归问题。下面我们将给出递归和非递归的不同源代码。