title: Recursion sierpinski triangles
body: <p>This is the code i have been doing i am trying to get triangles in each other but i can't get it ..</p>
  
  <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-html lang-html prettyprint-override"><code>import java.awt.*;
  import javax.swing.*;
  
  public class Sierpinski_Triangle extends JPanel {
      private static int numberLevelsOfRecursion;
  
      public Sierpinski_Triangle(int numLevels) {
          numberLevelsOfRecursion = numLevels;
      }
  
      public void paintComponent(Graphics computerScreen) {
          super.paintComponent(computerScreen);
          Point top = new Point(250, 50);
          Point left = new Point(50, 450);
          Point right = new Point(450, 450);
          drawTriangle(computerScreen, numberLevelsOfRecursion, top, left, right);
      }
  
      /**
       * Draw a Sierpinski triangle
       * 
       * @param screen
       *            the surface on which to draw the Sierpinski image
       * @param levels
       *            number of levels of triangles-within-triangles
       * @param top
       *            coordinates of the top point of the triangle
       * @param left
       *            coordinates of the lower-left point of the triangle
       * @param right
       *            coordinates of the lower-right point of the triangle
       */
      public static void drawTriangle(Graphics g, int levels, Point top, Point left, Point right) {
          /**
           * You must COMPLETER THE CODE HERE to draw the Sierpinski Triangle
           * recursive code needed to draw the Sierpinski Triangle
           */
          Point p1 = top;
          Point p2 = left;
          Point p3 = right;
          if (levels == 2) {
              // base case: simple triangle
              Polygon tri = new Polygon();
              tri.addPoint(250, 50);
              tri.addPoint(50, 450);
              tri.addPoint(450, 450);
              g.setColor(Color.RED);
              g.fillPolygon(tri);
          } else {
              // Get the midpoint on each edge in the triangle
              Point p12 = midpoint(p1, p2);
              Point p23 = midpoint(p2, p3);
              Point p31 = midpoint(p3, p1);
              // recurse on 3 triangular areas
              drawTriangle(g, levels - 1, p1, p12, p31);
              drawTriangle(g, levels - 1, p12, p2, p23);
              drawTriangle(g, levels - 1, p31, p23, p3);
          }
      }
  
      private static Point midpoint(Point p1, Point p2) {
          return new Point((p1.x + p2.x) / 2, (p1.y + p2.y) / 2);
      }
  
      public static void main(String[] args) {
          JFrame frame = new JFrame("SierpinskiTriangle");
          Sierpinski_Triangle applet = new Sierpinski_Triangle(1);
          frame.add(applet);
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          frame.setSize(450, 450);
          frame.setVisible(true);
      }
  }</code></pre>
  </div>
  </div>
  </p>
  
  <p>I would really appreciate any tips to make this</p>
  
  <p><a href="https://i.stack.imgur.com/EPIDD.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/EPIDD.png" alt="enter image description here"></a></p>
  
  <p>P.S i am korean so i would really appreciate if you write details about the fixings thanks.</p>