"""
Recursion. 

A demonstration of recursion, which means functions call themselves. 
Notice how the drawCircle() function calls itself at the end of its block. 
It continues to do this until the variable "level" is equal to 1. 
"""


def setup():
    size(640, 360)
    noStroke()
    noLoop()


def draw():
    drawCircle(width / 2, 280, 6)


def drawCircle(x, radius, level):
    tt = 126 * level / 4.0
    fill(tt)
    ellipse(x, height / 2, radius * 2, radius * 2)
    if level > 1:
        level = level - 1
        drawCircle(x - radius / 2, radius / 2, level)
        drawCircle(x + radius / 2, radius / 2, level)

