用java写了一个汉诺塔

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');
    }
}
相关文章
相关标签/搜索