Open In App

Program to print the diamond shape

Improve
Improve
Like Article
Like
Save
Share
Report

Given a number n, write a program to print a diamond shape with 2n rows.

Examples : 

diamond

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.

 



Last Updated : 18 Apr, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads