int num_levels = 1;

void circleFractal( float x, float y, float r, int levels )
{
  ellipse( x, y, 2*r, 2*r );
  // ellipse( x - r, y, r, r );
  // ellipse( x + r, y, r, r );
  if ( levels > 0 ) {
    circleFractal( x - r, y, 0.5*r, levels - 1 );
    circleFractal( x + r, y, 0.5*r, levels - 1 );
  }
}

void setup()
{
  size( 1200, 600 );
}

void draw()
{
  background( 100 );
  fill( 255, 20 );
  stroke( 255 );
  strokeWeight( 2 );
  circleFractal( width/2, height/2, 250, num_levels );
}

void keyPressed()
{
  if ( keyCode == LEFT ) {
    num_levels = max( 0, num_levels - 1 );
  } else if ( keyCode == RIGHT ) {
    ++num_levels;
  }
}