我有以下代码:
from turtle import *
speed(0)
def polygon(xangle, steps):
n = 360 // xangle # number of sides required for chosen exterior angle
for i in range(n):
forward(steps)
right(xangle)
def corner_polygons(xangle, steps):
n = 360 // xangle
for i in range(n):
draw_polygon(xangle, steps//5) # draw smaller polygon
forward(steps)
right(xangle)
def double_corner_polygons(xangle, steps):
n = 360 // xangle
for i in range(n):
corner_polygons(xangle, steps//5)
forward(steps)
right(xangle)
第一个函数绘制具有指定外角(xangle
)且边长等于steps
的多边形。第二个函数绘制与以前相同的多边形,但现在在每个角中放置一个较小的多边形。第三个功能更深一层,例如:
double_corner_polygons(60, 150)
给出:
我想添加另一个参数recursions
来控制绘图的深度,这样我每次都不必编写新的函数。我似乎无法做到这一点。到目前为止我的尝试:
def corner_polygons_recursive(xangle, steps, recs):
n = 360 // xangle
for i in range(n):
for j in range(1, recs+1):
corner_polygons(xangle, steps//5*j)
forward(steps)
right(xangle)
答案 0 :(得分:2)
它可能比你试图制作它更简单,可能是这样的:
import turtle
def corner_polygons_recursive(angle, side, depth):
if depth < 1:
return
n = 360 // angle
for _ in range(n):
corner_polygons_recursive(angle, side / 3, depth - 1)
turtle.forward(side)
turtle.right(angle)
corner_polygons_recursive(60, 150, 4)
turtle.exitonclick()
<强>输出强>