使用递归向内绘制三角形

问题描述 投票:0回答:1

使用递归,向内在屏幕上绘制三角的倍数。

下面我的错误代码

def recursiveTri(x, y, shrink):

    tt.penup()
    tt.setx(x)
    tt.sety(y)

    if x > -10:
        return

    for element in range(3):
        tt.pendown()
        tt.forward(x)
        tt.right(120)


    recursiveTri(x + shrink, y - shrink, shrink)

def main():
    recursiveTri(-300,300,30)
main()

参考当前代码:

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9wT2xrRi5wbmcifQ==” alt =“参考当前代码”>

这是向内形状的含义,需要将其复制为三角形:

“这是向内形状的意思,需要将其复制为三角形。”

python
1个回答
0
投票

问题出在

tt.forward(x)

[请记住,如果要对称于零,则x始终为负,并且边的长度不是x,而是-2 * x。由于三角形是嵌套的,因此您也可以将y中的初始x计算为-sqrt(3) / 2 * x,以将外接圆并外接在该圆上的圆心放在0,0:

import turtle as tt
from math import sqrt

def recursiveTri(side, shrink):
    if side < 10: return

    tt.penup()
    tt.setx(-side / 2)
    tt.sety(sqrt(3) / 4 * side)

    tt.pendown()

    for _ in range(3):
        tt.forward(side)
        tt.right(120)

   recursiveTri(side - shrink, shrink)
© www.soinside.com 2019 - 2024. All rights reserved.