在递归方法中创建ArrayList

时间:2017-05-03 16:42:32

标签: java recursion arraylist

我正在尝试解决一个问题,该问题找到了国际象棋问题的有效解决方案的数量,并且在打印代码时,它打印出92个对象的PartialSolution数组,这是正确的解决方案。这是递归完成的,我需要将这些数组添加到数组列表中,但我无法弄清楚如何。 这是我的代码:

public ArrayList<PartialSolution> solve(PartialSolution sol ){
    ArrayList<PartialSolution> solutions = new ArrayList<PartialSolution>();
    int exam = sol.examine();
    if(exam == PartialSolution.accept){
        solutions.add(sol);
    }
    else if(exam != PartialSolution.abandon){
        for(PartialSolution p : sol.extend()){
            solve(p);
        }
    }
    return solutions;
}

2 个答案:

答案 0 :(得分:0)

在类中定义变量并将列表添加到该列表而不是print。  或者让你的solve方法将第二个参数作为列表并将返回类型从void更改为list。对于第一个调用,给它一个空列表,并在每个递归调用中传递该列表。最后返回该列表

答案 1 :(得分:0)

如果您需要ArrayList来存储解决方案以供以后使用,那么您应该使用以下方法创建列表:

static ArrayList<PartialSolution> x = new ArrayList<PartialSolution>();

然后在打印sol时将解决方案添加到列表中。