微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

了解具有两个自调用的递归函数的执行流程

如何解决了解具有两个自调用的递归函数的执行流程

我需要帮助了解此功能的工作原理:

import turtle

annie = turtle.Turtle()

def draw(t,length,n):

    if n == 0:
        return
    angle = 50
    t.fd(length*n)
    t.lt(angle)
    draw(t,n-1)
    t.rt(2*angle)
    draw(t,n-1)
    t.lt(angle)
    t.bk(length*n)

draw(annie,30,4)

turtle.mainloop()

功能创建一个对称的分支图形,其中有一个大 Y 形分支,两个较小的 Y 形分支悬挂在较大 Y 形分支的每个臂的末端。该函数以“海龟”(当它在屏幕上移动时在其后面留下一条线的小箭头)从它绘制的最后一个较小分支的尖端向后四次结束,并在它从较大分支开始的位置结束分支。那么,如果在该语句之前的 self 调用从 n 的值中减去 1,那么在函数完成时 n = 4 怎么办?第一个 self 调用是否遍历函数的前几行回到那个 self 调用直到 n = 0,然后遍历函数的其余部分?在这种情况下,第二个自调用语句的第一个实例的 n 值是多少? 4? 0?我想我显然误解了一些东西,如果有任何资源可以帮助我了解我在做什么,我将不胜感激。

解决方法

最外层函数结束时 n 仍然是 4 的原因是每个函数都有自己的 n 副本。每个函数都在自己的范围内工作。

最外层函数将 n 的值传递给下一个函数。因此,每个后续函数都会创建自己的副本并从副本中减去 1,从不触及最外层函数作用域中的 n

这对列表、对象等的工作方式有所不同。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。