<p>虽然不是最快的实现,但它结构紧凑,让您不断猜测下一步的发展方向:</p>
<pre><code>from turtle import Screen, Turtle
def fractal(turtle, length, minimum):
if length < minimum:
return
angle = 90
length //= 2
for _ in range(2):
for _ in range(2):
turtle.forward(length)
turtle.left(angle)
turtle.forward(length)
turtle.left(angle)
fractal(turtle, length, minimum)
turtle.left(angle)
turtle.forward(length)
turtle.right(angle)
turtle.forward(length)
angle = -angle
screen = Screen()
yertle = Turtle()
yertle.speed('fastest') # because I have no patience
fractal(yertle, 100, 10)
screen.exitonclick()
</code></pre>
<p>首先,我们画出我们的方式,右上腿H,向内转并递归。一旦我们完成递归,我们继续朝同一个方向旋转,以向后移动手臂。我们不是一直沿着手臂向下移动(这是一个有效的方法),而是回到出发点,但现在我们面对的是相反的方向,所以我们只需重复之前所做的一切,画出H的左下角</p>
<p>一旦完成,我们又回到中心,指向原来的方向,所以我们再次重复整个过程,但是通过否定角度,把我们所有的权利变成左边,反之亦然。这画出了我们的左小腿,然后是右上肢。在</p>
<p><a href="https://i.stack.imgur.com/aBqum.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/aBqum.png" alt="enter image description here"/></a></p>