Este es un ejemplo sencillo del libro de Sedgewick. Es un programa que dibuja H’s recursivas (una en el centro y una en cada punta de la H central) y usa la clase StdDraw que viene con el libro para dibujar. Es bastante fácil, StdDraw.line(x0, y0, x1, y1)  es un método estático para dibujar una recta entre (x0, y0) y (x1, y1).

public class Htree {

  public static void draw(int n, double sz, double x, double y) {
   if (n == 0) return;
   double x0 = x - sz/2, x1 = x + sz/2;
   double y0 = y - sz/2, y1 = y + sz/2;
   StdDraw.line(x0,y, x1,y);
   StdDraw.line(x0, y0, x0, y1);
   StdDraw.line(x1, y0, x1, y1);
   draw(n-1, sz/2, x0, y1);
   draw(n-1, sz/2, x0, y0);
   draw(n-1, sz/2, x1, y1);
   draw(n-1, sz/2, x1, y0);
  }

  public static void main(String[] args) {
    int n = Integer.parseInt(args[0]);
    draw(n, .5, .5, .5);
  }

}

N son los niveles de recursión (cuántas H’s arriba de H’s dibujamos). Este es el resultado con H = 5:

 

htree

Anuncios