汉诺塔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。
        }
    }
}

猜你喜欢

转载自blog.csdn.net/Sherlook_Holmes/article/details/121174806