# Sierpinski triangle

• Difficulty Level : Easy
• Last Updated : 15 Nov, 2021

Sierpinski triangle is a fractal and attractive fixed set with the overall shape of an equilateral triangle. It subdivides recursively into smaller triangles. Examples :

```Input : n = 4
Output :
*
* *
*   *
* * * *

Input : n = 8
Output :
*
* *
*   *
* * * *
*       *
* *     * *
*   *   *   *
* * * * * * * * ```

Approach :

Sierpinski Triangle will be constructed from an equilateral triangle by repeated removal of triangular subsets.
Steps for Construction :
1 . Take any equilateral triangle .
2 . Divide it into 4 smaller congruent triangle and remove the central triangle .
3 . Repeat step 2 for each of the remaining smaller triangles forever.

Below is the program to implement sierpinski triangle

## C++

 `// C++ program to print sierpinski triangle.``#include ``using` `namespace` `std;` `void` `printSierpinski(``int` `n)``{``    ``for` `(``int` `y = n - 1; y >= 0; y--) {` `        ``// printing space till``        ``// the value of y``        ``for` `(``int` `i = 0; i < y; i++) {``            ``cout<<``" "``;``        ``}` `        ``// printing '*'``        ``for` `(``int` `x = 0; x + y < n; x++) {` `        ``// printing '*' at the appropriate position``        ``// is done by the and value of x and y``        ``// wherever value is 0 we have printed '*'``        ``if``(x & y)``            ``cout<<``" "``<<``" "``;``        ``else``            ``cout<<``"* "``;``        ``}` `        ``cout<

## Java

 `// Java program to print``// sierpinski triangle.``import` `java.util.*;``import` `java.io.*;` `class` `GFG``{``    ``static` `void` `printSierpinski(``int` `n)``    ``{``        ``for` `(``int` `y = n - ``1``; y >= ``0``; y--) {` `            ``// printing space till``            ``// the value of y``            ``for` `(``int` `i = ``0``; i < y; i++) {``                ``System.out.print(``" "``);``            ``}` `            ``// printing '*'``            ``for` `(``int` `x = ``0``; x + y < n; x++) {` `                ``// printing '*' at the appropriate``                ``// position is done by the and``                ``// value of x and y wherever value``                ``// is 0 we have printed '*'``                ``if` `((x & y) != ``0``)``                    ``System.out.print(``" "``                                    ``+ ``" "``);``                ``else``                    ``System.out.print(``"* "``);``            ``}` `            ``System.out.print(``"\n"``);``        ``}``    ``}` `    ``// Driver code``    ``public` `static` `void` `main(String args[])``    ``{``        ``int` `n = ``16``;` `        ``// Function calling``        ``printSierpinski(n);``    ``}``}` `// This code is contributed by Sahil_Bansall`

## Python3

 `# Python 3 program to print``# sierpinski triangle.` `def` `printSierpinski( n) :``    ` `    ``y ``=` `n ``-` `1``    ``while``(y >``=` `0``) :``        ` `        ``# printing space till``        ``# the value of y``        ``i ``=` `0``        ``while``(i < y ):``            ``print``(``" "``,end``=``"")``            ``i ``=` `i ``+` `1` `        ``# printing '*'``        ``x ``=` `0``        ``while``(x ``+` `y < n ):` `            ``# printing '*' at the appropriate``            ``# position is done by the and``            ``# value of x and y wherever value``            ``# is 0 we have printed '*'``            ``if` `((x & y) !``=` `0``) :``                ``print``(``" "``, end ``=` `" "``)``            ``else` `:``                ``print``(``"* "``, end ``=` `"")``            ``x ``=``x ``+` `1``        ` `        ``print``()``        ``y ``=` `y ``-` `1``        ` `# Driver code``n ``=` `16` `# Function calling``printSierpinski(n)`  `# This code is contributed by Nikita Tiwari.`

## C#

 `// C# program to print``// sierpinski triangle.``using` `System;` `class` `GFG {``    ``static` `void` `printSierpinski(``int` `n)``    ``{``        ``for` `(``int` `y = n - 1; y >= 0; y--) {` `            ``// printing space till``            ``// the value of y``            ``for` `(``int` `i = 0; i < y; i++) {``                ``Console.Write(``" "``);``            ``}` `            ``// printing '*'``            ``for` `(``int` `x = 0; x + y < n; x++) {` `                ``// printing '*' at the appropriate``                ``// position is done by the and``                ``// value of x and y wherever value``                ``// is 0 we have printed '*'``                ``if` `((x & y) != 0)``                    ``Console.Write(``" "` `+ ``" "``);``                ``else``                    ``Console.Write(``"* "``);``            ``}` `            ``Console.WriteLine();``        ``}``    ``}` `    ``// Driver code``    ``public` `static` `void` `Main()``    ``{``        ``int` `n = 16;` `        ``// Function calling``        ``printSierpinski(n);``    ``}``}` `// This code is contributed by vt_m`

## PHP

 `= 0; ``\$y``--)``    ``{` `        ``// printing space till``        ``// the value of y``        ``for` `(``\$i` `= 0; ``\$i` `< ``\$y``; ``\$i``++)``        ``{``            ``echo` `" "``;``        ``}` `        ``// printing '*'``        ``for` `(``\$x` `= 0; ``\$x` `+ ``\$y` `< ``\$n``; ``\$x``++)``        ``{` `        ``// printing '*' at the appropriate``        ``// position is done by the and value``        ``// of x and y wherever value is 0 we``        ``// have printed '*'``        ``if``(``\$x` `& ``\$y``)``            ``echo``"  "``;``        ``else``            ``echo``"* "``;``        ``}` `        ``echo` `"\n"``;``    ``}``}` `// Driver code``\$n` `= 16;``printSierpinski(``\$n``);` `// This code is contributed by Mithun Kumar``?>`

## Javascript

 ``

Output :

```               *
* *
*   *
* * * *
*       *
* *     * *
*   *   *   *
* * * * * * * *
*               *
* *             * *
*   *           *   *
* * * *         * * * *
*       *       *       *
* *     * *     * *     * *
*   *   *   *   *   *   *   *
* * * * * * * * * * * * * * * * ```

References : Wiki

My Personal Notes arrow_drop_up