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');
}
}
用java写了一个汉诺塔
最新推荐文章于 2025-09-13 09:06:35 发布