我变强(秃)了吧 应该 (汉诺塔ArrayList版)

发布于 4 天前  97 次阅读


快过年了给奶奶买个汉诺塔玩玩

说起递归 看到一张很有意思的图

代码如下:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;

public class test1 {

    public static void main(String[] args) throws ParseException {
        ArrayList<Integer> a = new ArrayList<Integer>();
        ArrayList<Integer> b = new ArrayList<Integer>();
        ArrayList<Integer> c = new ArrayList<Integer>();
        a.add(1);
        a.add(2);
        a.add(3);
        a.add(4);
        a.add(5);
        a.add(6);
        a.add(7);
        a.add(8);
        a.add(9);
        System.out.println("a:" + a);
        System.out.println("b:" + b);
        System.out.println("c:" + c);
        move(a.size(), a, b, c);
        System.out.println(">>>>>>>>>>>>>>>>>>>");
        System.out.println("a:" + a);
        System.out.println("b:" + b);
        System.out.println("c:" + c);
    }

    public static <T> void move(Integer n, ArrayList<T> a, ArrayList<T> b, ArrayList<T> c) {
        if (n == 1) {
            T object = a.get(0);
            a.remove(0);
            c.add(0, object);

        } else {
            move(n - 1, a, c, b);

            T object = a.get(0);
            a.remove(0);
            c.add(0, object);

            move(n - 1, b, a, c);
        }
    }

}