共有三根柱子,在一根柱子上从下往上按照大小顺序进行排放圆盘,并且要重新移动到另一个柱子上,并且规定,小圆盘上不可以摆放大圆盘,在三根柱子之间,一次只能移动一个圆盘
步骤均在代码中有标注
class H {
public void move(int num,char a,char b,char c){//num表示要移动的个数,a,b,c分别表示A塔,B塔,C塔
if(num==1){//假如只有一层
System.out.println(a+"->"+c);//输出直接从a移动到c
}else{
//第一步
move(num-1,a,c,b);//将所有的汉诺塔看成两层,最后一层,上面的层数全部看为一层,共看作两层;这一步是将上面的层数(num-1)从a层移动到b层,要借助c层
//第二步
System.out.println(a+"->"+c);//将最后一层直接从a层移动到c层
//第三步
move(num-1,b,a,c);//最后将上面的层数(num-1)再从b层移动到c层,要借助a层,从而完成交换
}
}
}
public class HanLuoTa {
public static void main(String ags[]){
H h=new H();
h.move(5,'A','B','C');//这里的5可以随意变化
}
}
测试结果 以5层为例:
A->C
A->B
C->B
A->C
B->A
B->C
A->C
A->B
C->B
C->A
B->A
C->B
A->C
A->B
C->B
A->C
B->A
B->C
A->C
B->A
C->B
C->A
B->A
B->C
A->C
A->B
C->B
A->C
B->A
B->C
A->C