用Python递归绘制正方形

用Python递归绘制正方形,python,recursion,turtle-graphics,Python,Recursion,Turtle Graphics,我在递归绘制正方形时遇到问题。我的问题是,当我递归调用draw_squares函数时,应该将什么长度传递给它。我似乎无法使它与原来的正方形正确匹配。查找附带的输出示例 首先,这里不是递归地绘制正方形:draw_squares2只调用draw_squares,它从不调用自身或其父对象。递归函数直接或间接地调用自身。看起来您正在朝着递归解决方案努力(将海龟移到一边的中间),但您还没有做到这一点 除此之外,我注意到你链接到帖子的图片似乎与上面的代码不匹配。还是 正如其他人所指出的,你所面临的问题是基本

我在递归绘制正方形时遇到问题。我的问题是,当我递归调用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会使我们得到有问题的原始数字:

一些关于几何的知识可能会有帮助。您需要使用。一些关于几何的知识可能会有帮助。您需要使用。