用Python递归绘制正方形
我在递归绘制正方形时遇到问题。我的问题是,当我递归调用draw_squares函数时,应该将什么长度传递给它。我似乎无法使它与原来的正方形正确匹配。查找附带的输出示例用Python递归绘制正方形,python,recursion,turtle-graphics,Python,Recursion,Turtle Graphics,我在递归绘制正方形时遇到问题。我的问题是,当我递归调用draw_squares函数时,应该将什么长度传递给它。我似乎无法使它与原来的正方形正确匹配。查找附带的输出示例 首先,这里不是递归地绘制正方形:draw_squares2只调用draw_squares,它从不调用自身或其父对象。递归函数直接或间接地调用自身。看起来您正在朝着递归解决方案努力(将海龟移到一边的中间),但您还没有做到这一点 除此之外,我注意到你链接到帖子的图片似乎与上面的代码不匹配。还是 正如其他人所指出的,你所面临的问题是基本
首先,这里不是递归地绘制正方形:draw_squares2只调用draw_squares,它从不调用自身或其父对象。递归函数直接或间接地调用自身。看起来您正在朝着递归解决方案努力(将海龟移到一边的中间),但您还没有做到这一点 除此之外,我注意到你链接到帖子的图片似乎与上面的代码不匹配。还是 正如其他人所指出的,你所面临的问题是基本几何学:一个正方形以45度角刻在另一个正方形上的边长是多少?您需要的长度是主正方形边长的sqrt(2)/2倍
跟踪您如何使用此值;您的程序很容易将事物乘以2或除以2。考虑在临界点使用<强> Prime<强>语句来跟踪计算。
首先,这里不是递归地画方块:DrutsSuffRES2只调用拖拽方块,它从不调用它自己或它的父。递归函数直接或间接地调用自身。看起来您正在朝着递归解决方案努力(将海龟移到一边的中间),但您还没有做到这一点
除此之外,我注意到你链接到帖子的图片似乎与上面的代码不匹配。还是 正如其他人所指出的,你所面临的问题是基本几何学:一个正方形以45度角刻在另一个正方形上的边长是多少?您需要的长度是主正方形边长的sqrt(2)/2倍跟踪您如何使用此值;您的程序很容易将事物乘以2或除以2。考虑在临界点使用<强> PrimePrime/Stand >语句来跟踪计算。 < P>所提出的问题不是递归的,但它可能是递归的。我在下面写了一个使用冲压的示例方法,虽然不能直接转换为绘图方法,但应该给您一些想法,而不是解决方案:
from turtle import Turtle, Screen
colors = ["navy", "gold"]
STAMP_UNIT = 20
def draw_figure(turtle, side_size, depth):
turtle.turtlesize(side_size / STAMP_UNIT)
turtle.color(colors[depth % 2], "white")
turtle.stamp()
if depth < 1:
return
turtle.forward(side_size / 4)
turtle.left(45)
draw_figure(turtle, side_size / 2 / 2**0.5, depth - 1)
turtle.right(45)
turtle.backward(side_size / 2)
turtle.left(45)
draw_figure(turtle, side_size / 2 / 2**0.5, depth - 1)
turtle.right(45)
turtle.forward(side_size / 4) # return to starting point
yertle = Turtle(shape="square", visible=False)
yertle.penup()
draw_figure(yertle, 240, 3)
screen = Screen()
screen.exitonclick()
从海龟导入海龟,屏幕
颜色=[“海军蓝”、“金色”]
邮票单位=20
def绘图图形(海龟、侧面尺寸、深度):
海龟。套头衫尺寸(侧面尺寸/邮票尺寸单位)
海龟颜色(颜色[深度%2],“白色”)
乌龟邮票()
如果深度小于1:
返回
乌龟。向前(侧边尺寸/4)
乌龟。左(45)
绘制图形(海龟,侧边尺寸/2/2**0.5,深度-1)
乌龟。右(45)
海龟。向后(侧边尺寸/2)
乌龟。左(45)
绘制图形(海龟,侧边尺寸/2/2**0.5,深度-1)
乌龟。右(45)
乌龟。向前(侧_尺寸/4)#返回起点
耶特尔=乌龟(shape=“square”,可见=假)
耶特尔·彭普
绘制图(耶特尔,240,3)
screen=screen()
screen.exitonclick()
在深度3,我们得到:
但是,将深度设置为1会使我们得到有问题的原始数字:
提出的问题不是递归的,但可能是递归的。我在下面写了一个使用冲压的示例方法,虽然不能直接转换为绘图方法,但应该给您一些想法,而不是解决方案:
from turtle import Turtle, Screen
colors = ["navy", "gold"]
STAMP_UNIT = 20
def draw_figure(turtle, side_size, depth):
turtle.turtlesize(side_size / STAMP_UNIT)
turtle.color(colors[depth % 2], "white")
turtle.stamp()
if depth < 1:
return
turtle.forward(side_size / 4)
turtle.left(45)
draw_figure(turtle, side_size / 2 / 2**0.5, depth - 1)
turtle.right(45)
turtle.backward(side_size / 2)
turtle.left(45)
draw_figure(turtle, side_size / 2 / 2**0.5, depth - 1)
turtle.right(45)
turtle.forward(side_size / 4) # return to starting point
yertle = Turtle(shape="square", visible=False)
yertle.penup()
draw_figure(yertle, 240, 3)
screen = Screen()
screen.exitonclick()
从海龟导入海龟,屏幕
颜色=[“海军蓝”、“金色”]
邮票单位=20
def绘图图形(海龟、侧面尺寸、深度):
海龟。套头衫尺寸(侧面尺寸/邮票尺寸单位)
海龟颜色(颜色[深度%2],“白色”)
乌龟邮票()
如果深度小于1:
返回
乌龟。向前(侧边尺寸/4)
乌龟。左(45)
绘制图形(海龟,侧边尺寸/2/2**0.5,深度-1)
乌龟。右(45)
海龟。向后(侧边尺寸/2)
乌龟。左(45)
绘制图形(海龟,侧边尺寸/2/2**0.5,深度-1)
乌龟。右(45)
乌龟。向前(侧_尺寸/4)#返回起点
耶特尔=乌龟(shape=“square”,可见=假)
耶特尔·彭普
绘制图(耶特尔,240,3)
screen=screen()
screen.exitonclick()
在深度3,我们得到:
但是,将深度设置为1会使我们得到有问题的原始数字:
一些关于几何的知识可能会有帮助。您需要使用。一些关于几何的知识可能会有帮助。您需要使用。