擅长:python、mysql、java
<p>问题在于</p>
<pre><code>tt.forward(x)
</code></pre>
<p>记住你的<code>x</code>总是负数,如果你想对称于零,边的长度不是<code>x</code>,而是<code>-2 * x</code>。由于三角形是嵌套的,您还可以从<code>x</code>计算初始<code>y</code>,因为它是主平分线上方的1/3<code>-sqrt(3) / 3 * x</code>因此,将三角形中外接圆和内接圆的中心置于0,0</p>
<p>事实上,只需固定边的长度,并根据以下公式计算<code>x</code>和<code>y</code>可能更容易:</p>
<pre><code>import turtle as tt
from math import sqrt
def recursiveTri(side, shrink):
if side < 10: return
tt.penup()
tt.goto(-side / 2, sqrt(3) / 6 * side)
tt.pendown()
for _ in range(3):
tt.forward(side)
tt.right(120)
recursiveTri(side - shrink, shrink)
tt.penup()
tt.home()
tt.dot()
recursiveTri(300, 30)
</code></pre>
<p>在这种情况下,<code>shrink</code>是从每一侧移除的总量。如果您希望它是您前进的数量,请将递归调用更改为<code>recursiveTri(side - 2 * shrink, shrink)</code></p>
<p>结果(不将<code>shrink</code>乘以2)为</p>
<p><a href="https://i.stack.imgur.com/02Zlh.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/02Zlh.png" alt="Nested triangles"/></a></p>