擅长:python、mysql、java
<p>你的问题在于递归计算边的新长度:</p>
<pre><code>def kochCurve(level, lengthSide):
if(level == 0):
ut.fd(lengthSide)
else:
newLengthSide = level/3.0 ## <-- Wrong.
newLevel = level - 1
kochCurve(newLevel, newLengthSide)
ut.lt(60)
kochCurve(newLevel, newLengthSide)
ut.rt(120)
kochCurve(newLevel, newLengthSide)
ut.lt(60)
kochCurve(newLevel, newLengthSide)
</code></pre>
<p>计算newLengthSide时不需要引用当前的length side。行应该是这样的:</p>
<pre><code> newLengthSide = lengthSide / 3.0
</code></pre>
<p>分段数为0.33333的原因是忽略传入的.305并以1/3.0开头。</p>
<p>我不确定传入的值应该代表什么,所以这可能不是要使用的正确新行,但这就是为什么段的长度是错误的。</p>