Given a number n, write a program to print a diamond shape with 2n rows.
Examples :
C++
// 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
// 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
// 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. |
Python3
# 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#
// 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. |
PHP
<?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 ?> |
Javascript
<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>
|
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
Implementation:
C++
// 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
// 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 |
Python3
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__ |
C#
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
// 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.