import java.awt.*; import javax.swing.*; public class Rec extends JPanel { private int test; /* change 'max' and try different values, compilate again after each change before running the app */ private int max = 10; public void paintComponent(Graphics g) { super.paintComponent(g); test = 0; drawRuler(g, 0, 400, 8); g.drawString("A recursion example with graphics", 10, 130); } private void drawRuler(Graphics g, int left, int right, int level) { if (level < 1) return; if (test > max) return; test++; int mid = (left + right) / 2; g.drawLine (mid, 110, mid, 110 - level * 10); drawRuler (g, left, mid-1, level - 1); drawRuler (g, mid + 1, right, level - 1); } /* each line mentioning 'test' and 'max' may be removed after exploring how the recursion works, or else set 'max' to a high value */ }