汉诺塔

package com.charles.algorithm;

public class Hanoi {

    private String loc;
    private int num;

    public Hanoi() {
    }
    
    public Hanoi(Hanoi h) {
        this.num = h.num;
        this.loc = h.loc;
    }

    public Hanoi(String loc, int num) {
        this.loc = loc;
        this.num = num;
    }

    public static void main(String[] args) {
        
        final int INT_NUM = 3;
        Hanoi A = new Hanoi("A", INT_NUM), B = new Hanoi("B", 0), C = new Hanoi("C", 0);
        int sum = A.num;
        new Hanoi().hanoi(sum, A, B, C);
        System.out.println(A);
        System.out.println(B);
        System.out.println(C);
    }

    public void hanoi(int sum, Hanoi A, Hanoi B, Hanoi C) {

        if (1 == sum) {
            System.out.println(A.loc + " ------->  " + C.loc);
            A.num--;
            C.num++;
        } else {
            hanoi(sum-1, A, C, B);
            hanoi(1, A, B, C);
            hanoi(sum-1, B, A, C);
        }
    }

    public void hanoi(int num, String A, String B, String C) {

        if (1 == num) {
            System.out.println(A + " ------->  " + C);
        } else {
            hanoi(num - 1, A, C, B);
            hanoi(1, A, B, C);
            hanoi(num - 1, B, A, C);
        }
    }

    public String getLoc() {
        return loc;
    }

    public void setLoc(String loc) {
        this.loc = loc;
    }

    public int getNum() {
        return num;
    }

    public void setNum(int num) {
        this.num = num;
    }

    @Override
    public String toString() {
        return "Hanoi [loc=" + loc + ", num=" + num + "]";
    }

}
原文地址:https://www.cnblogs.com/itachy/p/7196691.html