java中的回溯DUCU

java中的回溯DUCU,java,backtracking,recursive-backtracking,Java,Backtracking,Recursive Backtracking,这段代码导致StackOverflower错误,但我无法确定问题出在哪里 public boolean backtracking(int n, ArrayList<Point2D.Double> R, ArrayList<Point2D.Double> S) { ArrayList<Point2D.Double> C = new ArrayList<>(); if (R.isEmpty()) return true; els

这段代码导致StackOverflower错误,但我无法确定问题出在哪里

public boolean backtracking(int n, ArrayList<Point2D.Double> R, ArrayList<Point2D.Double> S) {
    ArrayList<Point2D.Double> C = new ArrayList<>();
    if (R.isEmpty()) return true;
    else {
        for (int i = 0; i <= R.size() - 1; i++) {

            Point2D.Double currentPt = R.remove(i);
            S.add(currentPt);
            Ellipse2D.Double circle = new Ellipse2D.Double(currentPt.x - r, currentPt.y - r, r * 2, r * 2);

            for (int j = 0; j <= R.size()-1 ; j++){
                if (circle.contains(R.get(j))){
                    C.add(R.remove(j));
                }
            }

            backtracking(n+1, R, S);

            if (!C.isEmpty())   R.addAll(C);
            R.add(S.remove(S.size() - 1));
        }

    }
    return false;
}
公共布尔回溯(int n,ArrayList R,ArrayList S){
ArrayList C=新的ArrayList();
如果(R.isEmpty())返回true;
否则{

对于(int i=0;i FYI,
i
相当于,并且比
更传统,i no不能解决问题,但是thanx!我没有说它能解决问题。事实上,我说它与你所拥有的是等价的。