我刚刚开始学习Python,我不明白在自己内部调用相同函数的能力?
这是一个例子:
import turtle
from turtle import left, right, forward
size = 10
def hilbert(level, angle):
if level == 0:
return
turtle.color("Blue")
turtle.speed("Fastest")
right(angle)
hilbert(level - 1, -angle)
forward(size)
left(angle)
hilbert(level - 1, angle)
forward(size)
hilbert(level - 1, angle)
left(angle)
forward(size)
hilbert(level - 1, -angle)
right(angle)
这究竟是如何工作的?
谢谢.
解决方法:
当等级等于0时,hilbert(等级,角度)才会返回,即什么都不做.
现在考虑当level等于1时会发生什么:调用hilbert(1,angle)执行以下语句:
turtle.color("Blue")
turtle.speed("Fastest")
right(angle)
forward(size)
left(angle)
forward(size)
left(angle)
forward(size)
right(angle)
在我看来,这可能是一个正方形的三面.
hilbert(level-1,…)语句已被删除,因为level-1等于0,我们已经确定hilbert(0,…)什么都不做.
现在,考虑一下调用hilbert(1,-angle)时会发生什么.
接下来,考虑当等级等于2时会发生什么.我希望这能让你知道如何继续.
PS.关于Python的可爱之处 – 你可以以交互方式运行程序来可视化调用hilbert(1,角度)的功能,然后hilbert(2,angle)执行,等等…
标签:python