Skip to content
Related Articles

Related Articles

Improve Article
Sierpinski triangle
  • Difficulty Level : Easy
  • Last Updated : 27 May, 2021

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

Sierpinski_triangle1

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 <bits/stdc++.h>
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<<endl;
    }
}
 
// Driver code
int main()
{
    int n = 16;
 
    // Function calling
    printSierpinski(n);
 
    return 0;
}

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




<?php
// PHP implementation to
// print sierpinski triangle.
 
function printSierpinski($n)
{
    for ($y = $n - 1; $y >= 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




<script>
 
// javascript program to prvar
// sierpinski triangle.
 
function printSierpinski(n)
{
    for (var y = n - 1; y >= 0; y--) {
 
        // printing space till
        // the value of y
        for (var i = 0; i < y; i++) {
            document.write(" ");
        }
 
        // printing '*'
        for (var 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)
                document.write("   ");
            else
                document.write("* ");
        }
 
        document.write("<br>");
    }
}
 
// Driver code
var n = 16;
 
// Function calling
printSierpinski(n);
 
 
// This code contributed by Princi Singh
</script>

Output : 
 

               * 
              * * 
             *   * 
            * * * * 
           *       * 
          * *     * * 
         *   *   *   * 
        * * * * * * * * 
       *               * 
      * *             * * 
     *   *           *   * 
    * * * *         * * * * 
   *       *       *       * 
  * *     * *     * *     * * 
 *   *   *   *   *   *   *   * 
* * * * * * * * * * * * * * * * 

References : Wiki
 




My Personal Notes arrow_drop_up
Recommended Articles
Page :