# Sierpinski Triangles. Have a few questions.

Printable View

• 03-30-2012, 01:50 AM
xdrazkalnytex
Sierpinski Triangles. Have a few questions.
So I was working on this program call Sierpinski Triangles. The program is working but doesn't seems to be right.
When I run the program "java Sierpinski Triangles 4" I got one big triangle as the output. Am I doing something wrong here?

Code:

```// SierpinskiTriangles.java public class SierpinskiTriangles {     // Recursively draws Sierpinski triangles. The argument n specifies the     // recursion depth. The rest of the arguments are the (x, y) coordinates     // of the vertices of an equilateral triangle; a being the bottom left vertex,     // b the bottom right vertex, and c the top vertex.     private static void draw(int n, double ax, double ay, double bx, double by,                             double cx, double cy)     {         // TBD       double x = 0.0;       double y = 0.0;             double[] xs = {ax , bx , cx};       double[] ys = {ay , by , cy};             for(int i =0; i < n; i++);       {         int k = StdRandom.uniform(1);         if(n ==0)         {           double x1 = (xs[k] * x) + (xs[k] * y) + (xs[k]);           double y1 = (ys[k] * x) + (ys[k] * y) + (ys[k]);                            }       }       StdDraw.polygon(xs,ys);     }     // Entry point.     public static void main(String[] args)     {         int n = Integer.parseInt(args); // Recursion depth.         StdDraw.setXscale(0.0, 1.0);         StdDraw.setYscale(0.0, 1.0);         StdDraw.show(0);         draw(n, 0.0, 0.0, 1.0, 0.0, 0.5, 0.866);         StdDraw.show(0);     } }```
• 03-30-2012, 02:40 AM
Fubarable
Re: Sierpinski Triangles. Have a few questions.
Quote:

So I was working on this program call Sierpinski Triangles. The program is working but doesn't seems to be right.
When I run the program "java Sierpinski Triangles 4" I got one big triangle as the output. Am I doing something wrong here?

Code:

```// SierpinskiTriangles.java public class SierpinskiTriangles {     // ****Recursively****  draws Sierpinski triangles. The argument n specifies the     // recursion depth. The rest of the arguments are the (x, y) coordinates     // of the vertices of an equilateral triangle; a being the bottom left vertex,     // b the bottom right vertex, and c the top vertex.     private static void draw(int n, double ax, double ay, double bx, double by,                             double cx, double cy)     {         // TBD       double x = 0.0;       double y = 0.0;             double[] xs = {ax , bx , cx};       double[] ys = {ay , by , cy};             for(int i =0; i < n; i++);       {         int k = StdRandom.uniform(1);         if(n ==0)         {           double x1 = (xs[k] * x) + (xs[k] * y) + (xs[k]);           double y1 = (ys[k] * x) + (ys[k] * y) + (ys[k]);                            }       }       StdDraw.polygon(xs,ys);     }     // Entry point.     public static void main(String[] args)     {         int n = Integer.parseInt(args); // Recursion depth.         StdDraw.setXscale(0.0, 1.0);         StdDraw.setYscale(0.0, 1.0);         StdDraw.show(0);         draw(n, 0.0, 0.0, 1.0, 0.0, 0.5, 0.866);         StdDraw.show(0);     } }```

Note the word highlighted by the **** **** -- your comments state that this is supposed to be an example of recursion. So where is your recursion?
• 03-30-2012, 02:41 AM
sunde887
Re: Sierpinski Triangles. Have a few questions.
First, I don't see any recursive calls. Also, in the loop in draw you create local variables in the loops body and never use them.
• 03-30-2012, 02:59 AM
xdrazkalnytex
Re: Sierpinski Triangles. Have a few questions.
So does that mean I dont need a loop?
I didn't know there was a recursive, when I first got the file for this program I just fill out the body.
Also, recursive means the triangles supposed to draw 3 more triangles inside of the large one right?
Can someone help me with the recursive calls since I have no idea how to get started.
Thanks!
• 03-30-2012, 04:13 AM
sunde887
Re: Sierpinski Triangles. Have a few questions.
Using recursion is a general practice, which is common in mathematics, as well as computer science. Recursion is the process of defining a base case and giving a rule which uses previous terms. As a concrete example, here is a recursive definition of n! (n factorial)

Code:

```public int factorial(int n){   if(n == 0){     return 1;   }   return n * factorial(n - 1); }```
With each iteration you perform a smaller sub task. Generally, loops aren't used in recursion. Perhaps for the recursive definition of Sierpinski, you may stop when n reaches a certain depth, and each depth will call on itself to draw three sub Sierpinski triangles inside of the initial one.
• 03-30-2012, 05:50 AM
xdrazkalnytex
Re: Sierpinski Triangles. Have a few questions.
how would I start my recursive for this program?
the public int......can't be place at the beginning of the program.