Program to print the Diamond Shape
Last Updated :
10 Jan, 2025
Improve
Try it on GfG Practice
Given a number n, write a program to print a diamond shape with 2n rows.
Examples :
// C++ program to print diamond shape
// with 2n rows
#include <bits/stdc++.h>
using namespace std;
// Prints diamond pattern with 2n rows
void printDiamond(int n)
{
int space = n - 1;
// run loop (parent loop)
// till number of rows
for (int i = 0; i < n; i++)
{
// loop for initially space,
// before star printing
for (int j = 0;j < space; j++)
cout << " ";
// Print i+1 stars
for (int j = 0; j <= i; j++)
cout << "* ";
cout << endl;
space--;
}
// Repeat again in reverse order
space = 0;
// run loop (parent loop)
// till number of rows
for (int i = n; i > 0; i--)
{
// loop for initially space,
// before star printing
for (int j = 0; j < space; j++)
cout << " ";
// Print i stars
for (int j = 0;j < i;j++)
cout << "* ";
cout << endl;
space++;
}
}
// Driver code
int main()
{
printDiamond(5);
return 0;
}
// This is code is contributed
// by rathbhupendra
// C program to print
// diamond shape with
// 2n rows
#include<stdio.h>
// Prints diamond
// pattern with 2n rows
void printDiamond(int n)
{
int space = n - 1;
// run loop (parent loop)
// till number of rows
for (int i = 0; i < n; i++)
{
// loop for initially space,
// before star printing
for (int j = 0;j < space; j++)
printf(" ");
// Print i+1 stars
for (int j = 0;j <= i; j++)
printf("* ");
printf("\n");
space--;
}
// Repeat again in
// reverse order
space = 0;
// run loop (parent loop)
// till number of rows
for (int i = n; i > 0; i--)
{
// loop for initially space,
// before star printing
for (int j = 0; j < space; j++)
printf(" ");
// Print i stars
for (int j = 0;j < i;j++)
printf("* ");
printf("\n");
space++;
}
}
// Driver code
int main()
{
printDiamond(5);
return 0;
}
// JAVA Code to print
// the diamond shape
import java.util.*;
class GFG
{
// Prints diamond pattern
// with 2n rows
static void printDiamond(int n)
{
int space = n - 1;
// run loop (parent loop)
// till number of rows
for (int i = 0; i < n; i++)
{
// loop for initially space,
// before star printing
for (int j = 0; j < space; j++)
System.out.print(" ");
// Print i+1 stars
for (int j = 0; j <= i; j++)
System.out.print("* ");
System.out.print("\n");
space--;
}
// Repeat again in
// reverse order
space = 0;
// run loop (parent loop)
// till number of rows
for (int i = n; i > 0; i--)
{
// loop for initially space,
// before star printing
for (int j = 0; j < space; j++)
System.out.print(" ");
// Print i stars
for (int j = 0; j < i; j++)
System.out.print("* ");
System.out.print("\n");
space++;
}
}
// Driver Code
public static void main(String[] args)
{
printDiamond(5);
}
}
// This code is contributed
// by Arnav Kr. Mandal.
# Python program to
# print Diamond shape
# Function to print
# Diamond shape
def Diamond(rows):
n = 1
for i in range(1, rows + 1):
# loop to print spaces
for j in range (1, (rows - i) + 1):
print(end = " ")
# loop to print star
while n != (i+1):
print("*", end = " ")
n = n + 1
n = 1
# line break
print()
k = 0
n = 0
for i in range(1, rows + 1):
# loop to print spaces
for j in range (1, k + 1):
print(end = " ")
k = k + 1
# loop to print star
while n <= (rows - i):
print("*", end = " ")
n = n + 1
n = 0
print()
# Driver Code
# number of rows input
rows = 5
Diamond(rows)
// C# Code to print
// the diamond shape
using System;
class GFG
{
// Prints diamond pattern
// with 2n rows
static void printDiamond(int n)
{
int space = n - 1;
// run loop (parent loop)
// till number of rows
for (int i = 0; i < n; i++)
{
// loop for initially space,
// before star printing
for (int j = 0; j < space; j++)
Console.Write(" ");
// Print i+1 stars
for (int j = 0; j <= i; j++)
Console.Write("* ");
Console.Write("\n");
space--;
}
// Repeat again in
// reverse order
space = 0;
// run loop (parent loop)
// till number of rows
for (int i = n; i > 0; i--)
{
// loop for initially space,
// before star printing
for (int j = 0; j < space; j++)
Console.Write(" ");
// Print i stars
for (int j = 0; j < i; j++)
Console.Write("* ");
Console.Write("\n");
space++;
}
}
// Driver Code
public static void Main()
{
printDiamond(5);
}
}
// This code is contributed
// by Smitha Semwal.
<script>
// JavaScript program to print diamond shape
// with 2n rows
// Prints diamond pattern with 2n rows
function printDiamond(n) {
var space = n - 1;
// run loop (parent loop)
// till number of rows
for (var i = 0; i < n; i++) {
// loop for initially space,
// before star printing
for (var j = 0; j < space; j++) document.write(" ");
// Print i+1 stars
for (var j = 0; j <= i; j++) document.write("*" + " ");
document.write("<br>");
space--;
}
// Repeat again in reverse order
space = 0;
// run loop (parent loop)
// till number of rows
for (var i = n; i > 0; i--)
{
// loop for initially space,
// before star printing
for (var j = 0; j < space; j++) document.write(" ");
// Print i stars
for (var j = 0; j < i; j++) document.write("*" + " ");
document.write("<br>");
space++;
}
}
// Driver code
printDiamond(5);
// This code is contributed by rdtank.
</script>
<?php
// PHP program to print
// diamond shape with
// 2n rows
// Prints diamond $
// pattern with 2n rows
function printDiamond($n)
{
$space = $n - 1;
// run loop (parent loop)
// till number of rows
for ($i = 0; $i < $n; $i++)
{
// loop for initially space,
// before star printing
for ($j = 0;$j < $space; $j++)
printf(" ");
// Print i+1 stars
for ($j = 0;$j <= $i; $j++)
printf("* ");
printf("\n");
$space--;
}
// Repeat again in
// reverse order
$space = 0;
// run loop (parent loop)
// till number of rows
for ($i = $n; $i > 0; $i--)
{
// loop for initially space,
// before star printing
for ($j = 0; $j < $space; $j++)
printf(" ");
// Pr$i stars
for ($j = 0;$j < $i;$j++)
printf("* ");
printf("\n");
$space++;
}
}
// Driver code
printDiamond(5);
// This code is contributed by Anuj_67
?>
Output
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Time Complexity: O(n*n) since we are traversing rows and columns of a grid for printing spaces ' ' and star '*'.
Auxiliary Space: O(1), No extra Space used.
Approach 2: Solving the problem using Recursion
Below is the implementation of the above approach:
// C++ program to print diamond pattern using recursion
#include <bits/stdc++.h>
using namespace std;
void gotonextLine(int k, int i, int z)
{
if (k == i) // base case
return;
cout << "* ";
gotonextLine(k + z, i, z);
}
void addblankSpaceInDiamond(
int j, int i, int z) // print blank space of diamond
{
if (j == i)
return;
cout << " ";
addblankSpaceInDiamond(j + z, i, z);
}
void upperDiamond(int row, int i)
{
if (i > row) // base case
return;
addblankSpaceInDiamond(row, i, -1);
gotonextLine(0, i, 1);
cout << endl;
upperDiamond(row, i + 1); // recursive call
}
void lowerDiamond(int row,
int i) // print the next line of diamond
{
if (i > row) // base case
return;
addblankSpaceInDiamond(0, i, 1);
gotonextLine(row, i, -1);
cout << endl;
lowerDiamond(row, i + 1);
}
int main()
{
int row;
row = 5;
upperDiamond(row, 0); // print upper part of triangle
lowerDiamond(row, 1); // print lower part of diamond
return 0;
// this code is contributed by Shivesh Kumar Dwivedi
}
// Java program to print diamond pattern using recursion
import java.io.*;
class GFG{
static void gotonextLine(int k, int i, int z)
{
if (k == i) // base case
return;
System.out.print("* ");
gotonextLine(k + z, i, z);
}
static void addblankSpaceInDiamond(int j, int i, int z) // print blank space of diamond
{
if (j == i)
return;
System.out.print(" ");
addblankSpaceInDiamond(j + z, i, z);
}
static void upperDiamond(int row, int i)
{
if (i > row) // base case
return;
addblankSpaceInDiamond(row, i, -1);
gotonextLine(0, i, 1);
System.out.print("\n");
upperDiamond(row, i + 1); // recursive call
}
static void lowerDiamond(int row, int i) // print the next line of diamond
{
if (i > row) // base case
return;
addblankSpaceInDiamond(0, i, 1);
gotonextLine(row, i, -1);
System.out.print("\n");
lowerDiamond(row, i + 1);
}
// Driver Code
public static void main(String[] args)
{
int row;
row = 5;
upperDiamond(row, 0); // print upper part of triangle
lowerDiamond(row, 1); // print lower part of diamond
}
}
// This code is contributed by adityapatil12
def gotonextLine(k, i, z):
# base case
if (k == i):
return
print("* ", end=""),
gotonextLine(k + z, i, z)
# print blank space of diamond
def addblankSpaceInDiamond(j,i,z):
if (j == i):
return
print(" ",end=""),
addblankSpaceInDiamond(j + z, i, z)
def upperDiamond(row,i):
# base case
if (i > row):
return
addblankSpaceInDiamond(row, i, -1)
gotonextLine(0, i, 1)
print("\n",end=""),
upperDiamond(row, i + 1) # recursive call
def lowerDiamond(row,i):
# print the next line of diamond
if (i > row): # base case
return
addblankSpaceInDiamond(0, i, 1)
gotonextLine(row, i, -1)
print("\n",end=""),
lowerDiamond(row, i + 1)
# Code
row = 5
upperDiamond(row, 0) # print upper part of triangle
lowerDiamond(row, 1) # print lower part of diamond
# This code is contributed by akashish__
using System;
public class GFG{
public static void gotonextLine(int k, int i, int z)
{
if (k == i) // base case
return;
Console.Write("* ");
gotonextLine(k + z, i, z);
}
public static void addblankSpaceInDiamond(
int j, int i, int z) // print blank space of diamond
{
if (j == i)
return;
Console.Write(" ");
addblankSpaceInDiamond(j + z, i, z);
}
public static void upperDiamond(int row, int i)
{
if (i > row) // base case
return;
addblankSpaceInDiamond(row, i, -1);
gotonextLine(0, i, 1);
Console.Write("\n");
upperDiamond(row, i + 1); // recursive call
}
public static void lowerDiamond(int row,
int i) // print the next line of diamond
{
if (i > row) // base case
return;
addblankSpaceInDiamond(0, i, 1);
gotonextLine(row, i, -1);
Console.Write("\n");
lowerDiamond(row, i + 1);
}
public static void Main ()
{
// Code
int row;
row = 5;
upperDiamond(row, 0); // print upper part of triangle
lowerDiamond(row, 1); // print lower part of diamond
}
}
// This code is contributed by akashish__
// JavaScript program to print diamond pattern using recursion
function gotonextLine(k, i, z)
{
if (k == i) // base case
return;
console.log("* ");
gotonextLine(k + z, i, z);
}
function addblankSpaceInDiamond(j, i, z) // print blank space of diamond
{
if (j == i)
return;
console.log(" ");
addblankSpaceInDiamond(j + z, i, z);
}
function upperDiamond(row, i)
{
if (i > row) // base case
return;
addblankSpaceInDiamond(row, i, -1);
gotonextLine(0, i, 1);
console.log("<br>");
upperDiamond(row, i + 1); // recursive call
}
function lowerDiamond(row, i) // print the next line of diamond
{
if (i > row) // base case
return;
addblankSpaceInDiamond(0, i, 1);
gotonextLine(row, i, -1);
console.log("<br>");
lowerDiamond(row, i + 1);
}
// Driver Code
let row;
row = 5;
upperDiamond(row, 0); // print upper part of triangle
lowerDiamond(row, 1); // print lower part of diamond
// This code is contributed by agfro1cac
Output
* * * * * * * * * * * * * * * * * * * * * * * * *
Time Complexity: O(N2), Since we are traversing rows and columns of a grid for printing spaces ' ' and star '*'.
Auxiliary Space: O(N), The extra space is used in recursion call stack.