DEV Community

loading...

Recursion, draw a tree with Python Turtle

petercour
・2 min read

You can use recursion to draw your shapes. Recursion is when a function calls itself with a stopping condition.

A famous example of recursion is the "droste effect", but unlike recursion in programming there is no stopping condition. It keeps going on forever.

Ok, so say a tree. A tree has branches, each branch has branches. Those branch have branches and so on.

A recursive function can draw itself, its branches, their branches. It's clear you need to use recursion to draw a tree with all its branches.

The code below is an example of that:

#!/usr/bin/python3
from turtle import Turtle, mainloop

def tree(plist, l, a, f):
    """ plist is list of pens
    l is length of branch
    a is half of the angle between 2 branches
    f is factor by which branch is shortened
    from level to level."""
    if l > 5: 
        lst = []
        for p in plist:
            p.forward(l)
            q = p.clone()
            p.left(a)
            q.right(a)
            lst.append(p)
            lst.append(q)
        tree(lst, l*f, a, f)



def main():
    p = Turtle()
    p.color("green")
    p.pensize(5)

    p.hideturtle() 
    p.speed(100)
    p.left(90)
    p.penup()
    p.goto(0,-200)
    p.pendown()

    t = tree([p], 200, 65, 0.6)

main()

The turtle was hidden with

p.hideturtle() 

without that line, the tree looks nicer:

Related links:

Discussion (2)

Collapse
jorgecc profile image
Jorge Castro

I had not seen Logo language in a long while.