<p>我同意@quamrana对这件事的看法,但让我们解决一个可能是难题的问题。有点诡计。你知道吗</p>
<p>首先,合并函数必须采用四个参数,因为<code>order</code>的<code>circle()</code>参数与<code>order</code>的<code>fract()</code>参数不相关。我们将其中的第一个重命名为<code>sides()</code>,因为这就是它所代表的。你知道吗</p>
<p>其次,您的<code>fract()</code>函数不是完全的<em>递归</em>,它在内部使用<em>迭代</em>。在我的解决方案中,我将遵循同样的模式。你知道吗</p>
<p>最后,我们需要一些隐藏的信息来处理您可以使用一个默认的第五个参数,该参数在内部发生变化,但是我将使用<code>sides</code>类型来实现这个结果:</p>
<pre><code>import turtle as t
def fract(t, sides, order, size):
if order == 0:
t.forward(size)
elif sides is not None:
for _ in range(sides):
fract(t, None, order, size)
t.right(360 / sides)
else:
for angle in (60, -120, 60, 0):
fract(t, None, order - 1, size / 3)
t.left(angle)
t.speed('fastest') # because I have no patience
fract(t, 4, 2, 300)
t.hideturtle()
t.exitonclick()
</code></pre>
<p>我相信这样做只需对原始代码进行最小的更改就可以达到您想要的结果。除了生成原始图形的<code>fract(t, 4, 2, 300)</code>调用之外,我们还可以执行类似<code>fract(t, 3, 3, 300)</code>的变体:</p>
<p><a href="https://i.stack.imgur.com/iYhxv.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/iYhxv.png" alt="enter image description here"/></a></p>
<p>您可能要解决的下一个问题是如何使这些图像在屏幕上居中,这样<code>fract(t, 5, 1, 300)</code>就不会从边缘掉下来。你知道吗</p>