用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');
    }
}
相關文章
相關標籤/搜索