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'); }}