递归
1.首先将 n-1 个盘子,从第一个柱子移动到第二个柱子,然后将最后一个盘子移动到第三个柱子上
最后将第二个柱子上的 n-1 个盘子,移动到第三个柱子上
class Solution {
public void hanota(List<Integer> A, List<Integer> B, List<Integer> C) {
//调用递归函数
digui(A.size(),A,B,C);
}
//定义递归函数
public void digui(int shu,List<Integer> diyi,List<Integer> dier,List<Integer> disan){
//当柱子上只有一个时的情况
if(shu==1){
disan.add(diyi.remove(diyi.size()-1));
return ;
}
//把第一个柱子上的值移到第二个主子上
digui(shu-1,diyi,disan,dier);
//将第三个柱子上的值移到第三个主子上
disan.add(diyi.remove(diyi.size()-1));
//将第二个主子上的值移到第三个柱子上
digui(shu-1,dier,diyi,disan);
}
}