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++ 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 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
# 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# 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 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
?>
<script>
// javascript program to print
// 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 :
*
* *
* *
* * * *
* *
* * * *
* * * *
* * * * * * * *
* *
* * * *
* * * *
* * * * * * * *
* * * *
* * * * * * * *
* * * * * * * *
* * * * * * * * * * * * * * * *
Time complexity: O(n2)
Auxiliary space: O(1)
References : Wiki