一直都不是很理解递归的思路,今天有空想理理清楚。就从经典的汉诺塔开始吧。
其实问题很简单,这是示意图,a是起始柱,c是目标柱,b起到中转作用。
在进行转移操作时,都必须确保大盘在小盘下面,且每次只能移动一个圆盘,最终c柱上有所有的盘子且也是从上到下按从小到大的顺序。
很显然可以用递归来解决,这里先贴上正确代码。我先用5个盘来写,64个是同理的。
class hanoi{
public static void main(String[] args)
{
goHanoi(5,'a','b','c');
}
public static void goHanoi(int n,char a,char b,char c){
if(n==