繁体   English   中英

Python龟递归树

[英]Python Turtle Recursion Tree

我想用python的乌龟编写一个程序来创建一个带有关卡的树。 下面是一些I / O,所以你看看它是做什么的。

在此输入图像描述

我的程序适用于第一种情况,但对于第二种情况打印太多。 该计划的规定如下:

  • 必须是递归的

  • 只能使用以下龟功能:

     turtle.forward(100) <-- turtle goes forward 100 steps turtle.right(90) <-- turtle turns right 90 degrees turtle.penup() <-- turtle lifts its pen up off of the paper turtle.forward(100) <-- turtle goes forward 100 steps turtle.pendown() <-- turtle puts its pen down on the paper turtle.pencolor("red") <-- turtle uses red pen turtle.circle(100) <-- turtle draws circle of radius 100 turtle.pencolor("blue") <-- turtle changes to blue pen (most other common colors work too!) turtle.forward(50) <-- turtle moves forward 50 steps turtle.xcor() <-- turtle returns its current x-coordinate turtle.ycor() <-- turtle returns its current y-coordinate 

我的计划:

import turtle

def tree(length,n):
    """ paints a branch of a tree with 2 smaller branches, like an Y"""
    if length < (length/n):
           return       # escape the function
    turtle.forward(length)        # paint the thik branch of the tree
    turtle.left(45)          # rotate left for smaller "fork" branch
    tree(length * 0.5,length/n)      # create a smaller branch with 1/2 the lenght of the parent branch
    turtle.right(90)         # rotoate right for smaller "fork" branch
    tree(length * 0.5,length/n)      # create second smaller branch
    turtle.left(45)          # rotate back to original heading
    turtle.backward(length)       # move back to original position
    return              # leave the function, continue with calling program

我认为有两个问题。

首先,对于递归调用,第二个参数应该是n-1而不是length / n。 如果您正在绘制等级n,则下一个调用将绘制等级n-1,而不是等级长度/ n。

第二个问题是逃逸条件。 第一次更改时,绘图将在没有更多级别绘制时完成,或者n == 1。

这听起来像是家庭作业,所以我不会发布确切的代码。

暂无
暂无

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

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