2016-06-09 49 views
1

所以我们刚刚进入Turtle小程序并在网上看到了这段代码。Java小程序龟

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

这是结果应该是什么样子,但是在我心中龟停在我的红圈是...

enter image description here

任何人都可以解释为什么乌龟进一步会AND为什么龟开始两棵子树?

因为如果我理解正确的代码的乌龟前进的台阶上,然后通过45度,但不正确的......

回答

2

龟应最终回到左转,在那里他开始了。让我们一行一行剖析代码:

forward(s); 

这绘制了树的垂直树干。

left(45); 

我们转向左边,让我们指向左上角。

tree(s/2); 

我们递归调用tree与底座长度的一半,造成了新的树从我们的树干在我们指定的方向(45度左右)分支。注意树会继续递归分支直到基本长度变得小于8个单位(像素?)长。之后,它返回到它从分支的底部分离的地方。

right(90); 

当我们完成绘制左分支后,我们转向右侧90度,以便我们现在指向右上角。

tree(s/2); 

和以前一样,我们分裂了,开始在这个方向上绘制一棵长度为一半的树。

left(45); 

我们转向左侧45度重新定向自己,以便我们直接点。

back(s); 

乌龟返回到树的底部。


总而言之,代码分支出来以45个角的一半碱基长度,直到分支变得太短左;之后,它会有效地向外旋转,同时拉出其余分支(先左后右)。