这段代码导致stackoverflower错误,但我无法确定问题所在。
public boolean backtracking(int n, ArrayList R, ArrayList S) {
ArrayList 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;
}
这个“应该”是一个计算覆盖R数组列表中所有点所需的最小圆数的方法。