簡體   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