如果您运行下面的代码,它将创建我试图创建的两个并排的图形。我需要弄清楚如何使递归方法在第一次绘制后停止。在
import turtle
def drawTriangle(size):
turtle.left(30)
turtle.forward(size)
turtle.right(120)
turtle.forward(size)
turtle.right(120)
turtle.forward(size)
turtle.right(120)
turtle.up()
turtle.forward(size)
turtle.right(30)
turtle.down()
def drawTriangles(size, depth):
if (depth < 1):
pass
else:
drawTriangle(size)
drawTriangles(size / 2, depth - 1)
turtle.up()
turtle.left(30)
turtle.forward(-size)
turtle.right(120)
turtle.forward(size * 2)
turtle.left(90)
turtle.down()
drawTriangle(size)
drawTriangles(size / 2, depth - 1)
turtle.up()
turtle.left(30)
turtle.forward(-size)
turtle.left(60)
turtle.forward(size * 2)
turtle.right(90)
turtle.down()
turtle.home()
turtle.left(90)
turtle.down()
turtle.speed("normal")
drawTriangles(100, 4)
input("pause")
首先,很好的尝试。你真的很亲密。这看起来是个有趣的项目。:)
我已经修复了您的代码,并将其包含在下面。你需要做的就是添加一个特殊条件来检查你是否在“基地”三角形上。如果是,就回来!在
如果我猜测,可能是因为您调用了以下两次(在drawTriangles()中),并且size变量的值在这两次调用之间没有变化。在
这是我的解决方案。我已经整理了一些逻辑,如果深度不为零,则绘制三角形并触发递归两次,一次用于绘制三角形的上角。最后,乌龟被移回它开始的地方。在
海龟通常是“向上”的,只有在drawTriangle函数中才“放下”。drawTriangle函数现在也将海龟返回到它开始的位置。在
注意整数除法。在做其他事情之前,我已经将大小设置为浮点数。在
相关问题 更多 >
编程相关推荐