Koch Curve java

时间:2013-11-07 20:13:42

标签: java recursion fractals

我已经获得了递归绘制Koch曲线和Koch Snowflake的任务。我似乎在输入与其他人一样的代码,但它根本不会工作。问题是,不是像它应该做的那样用自己的较小版本替换线,而是继续在一条线上,重复自己并且永远不会变小。这是我的代码。有人可以帮帮我吗?

public void draw(double level, double length)
{
    if (level < 1)
    {
        myPencil.forward(length);
    }

    else
    {
        draw(level - 1, (length) / 3);
        myPencil.turnLeft(60);
        draw(level - 1, (length) / 3);
        myPencil.turnRight(120);
        draw(level - 1, (length) / 3);
        myPencil.turnLeft(60);
        draw(level - 1, (length) / 3);
    }
}

2 个答案:

答案 0 :(得分:0)

如果你手动迭代你的循环几次,也许会发生什么变得清晰;或者将printfs()放在所有路径中,打印输出级别和长度为next和next函数。

initial conditions:  level = 2, length = 9
stack  enter       level     length     action
0      draw        2         9          call draw(1, 3)
1      draw        1         3          call draw(0, 1)
2      draw        0         1          myPencil.forward(1); return;
1                  1         3          myPencil.turnLeft(60); call draw(0, 1)
2      draw        0         1          myPencil.forward(1); return;
1                  1         3          myPencil.turnRight(120); call draw(0, 1)
2      draw        0         1          myPencil.forward(1); return;
1                  1         3          myPencil.turnLeft(60); call draw(0, 1)
2      draw        0         1          myPencil.forward(1); return;
1                  1         3          return;
0                  2         9          myPencil.turnLeft(60); call draw(1, 3)
     repeat steps above starting at line 2

答案 1 :(得分:-1)

您指的是myLength,它可能保持不变,而不是实际的方法参数length。这是正在减少的,所以你应该使用它。