2016-06-09 54 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個角的一半鹼基長度,直到分支變得太短左;之後,它會有效地向外旋轉,同時拉出其餘分支(先左後右)。