Cantor Set递归问题(家庭作业)

时间:2013-10-04 00:22:56

标签: function graphics recursion

我正在做一个家庭作业来创建一个程序,它接受一个参数“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);

}
}

1 个答案:

答案 0 :(得分:0)

你一遍又一遍地绘制同一条线。除了深度(n)之外的东西需要在递归调用的参数中进行更改。对行的结尾发表评论并不是这样。