package com.brzhang;/*** 汉诺塔* 开始盘子全部都放在第一根柱子上* 目的:将第一根柱子上的盘子全部移动到第三根柱子上,规则是不能编号较大的盘子放在编号交小的盘子上面。**/
public class HanoTa {private long steps = 1l;/**** @param n 盘子个数* @param from 第一根柱子* @param assist 第二根柱子* @param to 第三根柱子*/public void hannota(int n,char from ,char assist,char to){if(n == 1){move(n,from,to);}else{//将上面的n-1个盘子从from柱子移动到assist柱子,借助to柱子hannota(n-1,from,to,assist);//将最低下的盘子从from柱子移动到to柱子move(n,from,to);//将其余的n-1个盘子从assite柱子移动到to柱子借助from柱子hannota(n-1,assist,from,to);}}/*** 移动盘子,从from移动到to借助assite** @param from* @param to*/public void move(int n,char from,char to){System.out.printf("steps " +(steps++) +" move [pantzi "+n+ "] from "+from+" to "+to+"\n");}public static void main(String[] args) {new HanoTa().hannota(10,'A','B','C');}
}