因此,我们刚进入Turtle小程序并在网络上看到了此代码。
private void tree(int s)
{
if (s < 8)
return;
forward(s);
left(45);
tree(s / 2);
right(90);
tree(s / 2);
left(45);
back(s);
}
结果应该是这样,但是在我看来,乌龟停在我的红色圆圈所在的位置...
谁能解释为什么乌龟走得更远,为什么乌龟会启动两个子树?
因为如果我理解正确的代码,乌龟会向前移动s步,然后向左转45度,但向右转...
最佳答案
乌龟应该回到他开始的地方。让我们逐行分析代码:
forward(s);
这将绘制树的垂直树干。
left(45);
我们向左转,所以我们指向左上角。
tree(s / 2);
我们以基本长度的一半递归调用
tree
,使新树从树干沿我们指定的方向分支(向左45度)。请注意,树将继续递归分支,直到基本长度小于8个单位(像素?)为止。然后,它返回到分支的底部。right(90);
完成左分支的绘制之后,我们将向右旋转90度,以便现在指向右上角。
tree(s / 2);
像以前一样,我们拆分并开始在该方向上以一半的基本长度绘制一棵树。
left(45);
我们向左转45度以调整方向,使我们笔直向上。
back(s);
乌龟回到树的根部。
总共,代码以45度角向左分支,且基长为一半,直到分支变得太短为止。之后,它在绘制其余分支时有效地向外螺旋回去(先左,再右)。
关于java - Java小程序乌龟,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37736113/