-3

我的任务是递归地绘制科赫曲线和科赫雪花。我似乎在输入与其他人相同的代码,但它根本不起作用。问题是,它没有像它应该做的那样用更小的版本替换这些行,它只是继续在一条线上,重复自己并且永远不会变小。这是我的代码。有人能帮帮我吗?

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);
    }
}
4

2 回答 2

0

如果您手动迭代循环几次,也许发生的事情会变得清晰;或将 printfs() 放在所有路径和打印输出级别和长度下一个和下一个要调用的函数中。

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
于 2013-11-08T05:25:23.277 回答
-1

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

于 2013-11-07T20:27:47.323 回答