控制python函数

时间:2016-12-23 09:36:38

标签: python python-3.x recursion turtle-graphics fractals

我有以下代码:

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)

给出:

enter image description here

我想添加另一个参数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)

1 个答案:

答案 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()

<强>输出

enter image description here