我试图通过随机选择正方形中的一个点并通过它画两条线,然后将这些象限中的每一个分成4个,依此类推,直到宽度/高度为1,将正方形分成4个较小的象限一种递归方式。我的代码在这里:
public static void draw(int x0, int y0, int xmax, int ymax) {
if (Math.abs(xmax - x0) > 1 && Math.abs(ymax - y0) > 1) {
int rx = r.nextInt(xmax - 1) + 1; // line A
int ry = r.nextInt(ymax - 1) + 1; // line B
StdDraw.line(rx, y0, rx, ymax);
StdDraw.line(x0, ry, xmax, ry);
draw(x0, y0, rx, ry); // line C
draw(x0, ry, rx, ymax); // line D
draw(rx, ry, xmax, ymax); // line E
draw(rx, y0, xmax, ry); // line F
}
else ;
也就是说,我传递的是左下角坐标(x0,y0)和右上角坐标(xmax,ymax)。每当我注释掉 D、E 和 F 行时,一切正常。但是,当我取消注释 D、E 或 F 中的任何一个时,我会收到此错误java.lang.IllegalArgumentException: n must be positive
,通常指向 A 行或 B 行。有人可以告诉我这个错误的含义以及如何解决它吗?