我正在做一个家庭作业来创建一个程序,它接受一个参数“n”并创建一个深度的cantor线,但它似乎没有工作。我认为变量范围和功能存在问题。这是我第一次使用函数和递归,所以我仍然有点困惑。我有三个函数,一个用于绘制相对左线,相对右线和cantor函数,它自动调用两次并调用两个绘制函数。
public class Art
{
public static void drawLeftLine(double x0, double y0, double x1, double y1)
{
double x2 = (1/3.0)*(x1 - x0);
double x3 = x0;
double y2 = y0 - 0.1;
double y3 = y1 - 0.1;
StdDraw.line(x2, y2, x3, y3);
}
public static void drawRightLine(double x0, double y0, double x1, double y1)
{
double x2 = (2/3.0)*(x1 - x0);
double x3 = x1;
double y2 = y0 - 0.1;
double y3 = y1 - 0.1;
StdDraw.line(x2, y2, x3, y3);
}
public static void cantor(int n, double x0, double y0, double x1, double y1)
{
if (n == 0)
return;
drawLeftLine(x0, y0, x1, y1);
drawRightLine(x0, y0, x1, y1);
cantor(n-1, x0, y0, x1, y1); //left
cantor(n-1, x0, y0, x1, y1); //right
}
public static void main(String[] args)
{
int n = Integer.parseInt(args[0]);
double x0 = 0;
double y0 = 0.9;
double x1 = 0.9;
double y1 = 0.9;
StdDraw.line(x0, y0, x1, y1);
cantor(n, x0, y0, x1, y1);
}
}
答案 0 :(得分:0)
你一遍又一遍地绘制同一条线。除了深度(n
)之外的东西需要在递归调用的参数中进行更改。对行的结尾发表评论并不是这样。