Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python函数中递归深度的控制_Python_Python 3.x_Recursion_Turtle Graphics_Fractals - Fatal编程技术网

python函数中递归深度的控制

python函数中递归深度的控制,python,python-3.x,recursion,turtle-graphics,fractals,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):

我有以下代码:

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
)和等于
步数的边长绘制多边形。第二个函数绘制与以前相同的多边形,但现在在每个角中放置一个较小的多边形。第三个功能更深一层,例如:

double\u corner\u polygons(60150)

给出:

我想添加另一个参数,
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()
导入海龟
def corner_polygons_recursive(角度、侧面、深度):
如果深度小于1:
返回
n=360//角度
对于范围内的u(n):
角点\多边形\递归(角度、边/3、深度-1)
乌龟。向前(侧)
乌龟。右(角)
角点多边形递归(60,150,4)
turtle.exitonclick()
输出