繁体   English   中英

在python函数中控制递归深度

[英]Controlling depth of recursion in python function

我有以下代码:

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 ,该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)

它可能比您尝试做的要简单,例如:

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

输出值

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM