【问题标题】:Python Turtle Recursion TreePython Turtle 递归树
【发布时间】:2012-10-09 22:24:55
【问题描述】:

我想用 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

【问题讨论】:

  • 我不知道turtle是内置在python中的。你绝对让我开心。

标签: python tree turtle-graphics


【解决方案1】:

我认为有两个问题。

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

第二个问题是转义条件。第一次更改后,当没有更多关卡可以绘制时,绘制将完成,或者 n==1。

这听起来像是功课,所以我不会发布确切的代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-12
    • 1970-01-01
    • 1970-01-01
    • 2014-06-06
    • 1970-01-01
    • 2017-02-02
    • 2020-09-15
    相关资源
    最近更新 更多