【问题标题】:Controlling depth of recursion in python function控制python函数中的递归深度
【发布时间】:2017-05-09 00:03:47
【问题描述】:

我有以下代码:

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)

【问题讨论】:

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


    【解决方案1】:

    它可能比你想要的更简单,可能是这样的:

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

    输出

    【讨论】:

      猜你喜欢
      • 2017-12-05
      • 1970-01-01
      • 1970-01-01
      • 2017-02-20
      • 1970-01-01
      • 2011-01-24
      • 1970-01-01
      • 2021-11-22
      • 1970-01-01
      相关资源
      最近更新 更多