有人能给我解释一下这个递归程序是怎么工作的吗?

2024-10-01 15:28:32 发布

您现在位置:Python中文网/ 问答频道 /正文

enter image description here

我知道光标首先向左转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行,以此类推,我只是不知道如何按照代码来执行它们所做的操作。我不理解一个递归的graoh,但是这个真的让我头痛。你知道吗


Tags: 函数代码righttree顺序def地方情况
1条回答
网友
1楼 · 发布于 2024-10-01 15:28:32

用海龟画一个成功的递归图的关键是把小海龟放在你发现它的地方。这样,您就可以依次调用多个函数,它们将无缝匹配。你知道吗

在您的特定代码中:

向前(小枝)

它画树枝。你知道吗

t.right(20)

它向右旋转,为第一家支行做准备。你知道吗

tree(branchLen-15,t)

画一个较小的支行。记住,从这家支行回来后,海龟会在同一个地方。你知道吗

t.left(40)

它回滚上一个转弯(20)并向左旋转(+20)以准备第二个分支。你知道吗

tree(branchLen-15,t)

第二支行。你知道吗

t.right(20)
t.backward(branchLen)

这两条线是关键。第一个是取消旋转,以便海龟向前看。第二行移回起点。你知道吗

相关问题 更多 >

    热门问题