汉诺塔java递归实现

class Solution {
     
    public void hanota(List<Integer> A, List<Integer> B, List<Integer> C) {
     
        move(A.size(),A,B,C);               
    }
    public static void move(int n,List A,List B,List C) {
     
        if (n == 1) {
     
            C.add(A.remove(A.size() - 1));//只有一个盘子,直接将盘子从A移到C。
            return;
        }else {
     
            move(n - 1,A,C,B);//将n - 1个盘子看成一个整体,从A借助C挪到B。
            C.add(A.remove(A.size() - 1));//将最下的盘子直接挪到C。
            move(n - 1,B,A,C);//再将n - 1个盘子看成一个整体,从B借助A挪到C。
        }
    }
}

你可能感兴趣的:(题解,leetcode,算法,职场和发展)