[英]Can someone explain to me how does this recursion program work?
我知道光標首先向左旋轉90度,然后向后旋轉100,然后遞歸開始。
但是,根據樹函數中代碼的順序,光標將向前進75,向右轉20度,然后再次發生遞歸並向前75-15。 這將發生5次,最后一個僅向前10。然后光標將向后10,然后向左旋轉40度,依此類推。
這就是我感到困惑的地方。
def tree(branchLen,t)
if (branchLen>5):
t.forward(branchLen)
t.right(20)
tree(branchLen-15,t)
t.left(40)
tree(branchLen-15,t)
t.right(20)
t.backward(branchLen)
def main():
t = turtle.Turtle()
myWin = turtle.Screen()
t.left(90)
t.up()
t.backward(100)
t.down()
t.color("green")
tree(75,t)
myWin.exitonclick()
該程序似乎跳到最后一行代碼,然后跳到中間一行,然后向前移動10位,依此類推,我只是想不出如何遵循代碼來執行他們的操作。 我對遞歸一無所知,但是這一遞歸確實讓我頭疼。
使用Turtle成功進行遞歸繪圖的關鍵是將小烏龜放在找到它的位置。 這樣,您可以一個接一個地調用多個函數,它們將無縫地組合在一起。
在您的特定代碼中:
t.forward(branchLen)
它繪制分支。
t.right(20)
它將向右旋轉以准備第一個子分支。
tree(branchLen-15,t)
繪制一個較小的子分支。 請記住,從該分支機構返回時,海龜將位於同一地點。
t.left(40)
它回滾前一匝(20),並向左旋轉(+20),為第二個子分支做准備。
tree(branchLen-15,t)
繪制第二個子分支。
t.right(20)
t.backward(branchLen)
而這兩行是關鍵。 第一個取消旋轉,使烏龜向前看。 第二行移回起點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.