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> |
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
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 |
* * * * * * * * * * * * * * * * * * * * * * * * *
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.
This article is contributed by Rahul Singh(Nit KKR) and improved by Himanshu Patel(@prophet1999). If you like Lazyroar and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the Lazyroar main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.