Open In App

Recursive program to print triangular patterns

Last Updated : 13 Mar, 2023
Comments
Improve
Suggest changes
Like Article
Like
Report

We have discussed iterative pattern printing in previous post

Examples: 

Input : 7
Output :                    
      *
     * *
    * * *
   * * * * 
  * * * * *
 * * * * * *
* * * * * * *

Algorithm:- 
step 1:- first think for the base condition i.e. number less than 0 
step 2:-do the recursive calls till number less than 0 i.e:- printPartten(n-1, k+1); 
step 3:-print the spaces 
step 4:-then print * till number

Below is the implementation of above approach:

C++
// C++ program to print triangular patterns using Recursive
#include <iostream>

using namespace std;
void printPartten(int n, int k)
{
    if (n < 0) // Base condition
        return;

    // Recursive call
    printPartten(n - 1, k + 1); 

    int i;
    for (i = 0; i < k; i++) // it makes spaces
        cout << " ";
    for (i = 0; i < n; i++) // for print *
        printf("* ");
    printf("\n"); // for next line
}

int main()
{
    int n = 7;

    // Call to printPartten function
    printPartten(n, 0); 
    return 0;
}
Java
// Java program to print triangular patterns using Recursive
import java.io.*;
public class GFG{ 
static void printPartten(int n, int k) 
{ 
    if (n < 0) // Base condition 
        return; 

    // Recursive call 
    printPartten(n - 1, k + 1); 

    int i; 
    for (i = 0; i < k; i++) // it makes spaces 
        System.out.printf(" "); 
    for (i = 0; i < n; i++) // for print * 
        System.out.printf("* "); 
    System.out.printf("\n"); // for next line 
} 

public static void main(String[]args) 
{ 
    int n = 7; 

    // Call to printPartten function 
    printPartten(n, 0); 
} 
} 
Python3
# Python 3 program to print triangular
# patterns using Recursive

def printPartten(n, k):
    
    if (n < 0): # Base condition
        return;

    # Recursive call
    printPartten(n - 1, k + 1); 

    for i in range(0, k): # it makes spaces
        print(" ", end="");
    for i in range(0, n): # for print *
        print("* ", end = "");
    print("\n", end=""); # for next line

# Driver Code
n = 7;

# Call to printPartten function
printPartten(n, 0); 

# This code is contributed 
# by Akanksha Rai
C#
// C# program to print triangular
// patterns using Recursive
using System;

class GFG
{ 
static void printPartten(int n, int k) 
{ 
    if (n < 0) // Base condition 
        return; 

    // Recursive call 
    printPartten(n - 1, k + 1); 

    int i; 
    for (i = 0; i < k; i++) // it makes spaces 
        Console.Write(" "); 
    for (i = 0; i < n; i++) // for print * 
        Console.Write("* "); 
    Console.Write("\n"); // for next line 
} 

// Driver Code
public static void Main() 
{ 
    int n = 7; 

    // Call to printPartten function 
    printPartten(n, 0); 
} 
} 

// This code is contributed 
// by Subhadeep
PHP
<?php
// PHP program to print triangular
// patterns using Recursive 

function printPartten($n, $k) 
{ 
    if ($n < 0) // Base condition 
        return; 

    // Recursive call 
    printPartten($n - 1, $k + 1); 

    for ($i = 0; $i < $k; $i++) // it makes spaces 
        echo " "; 
    for ($i = 0; $i < $n; $i++) // for print * 
        echo ("* "); 
    echo ("\n"); // for next line 
} 

// Driver Code
$n = 7; 

// Call to printPartten function 
printPartten($n, 0); 

// This code is contributed by jit_t
?>
JavaScript
<script>
// javascript program to print triangular patterns using Recursive

    function printPartten(n , k) {
        if (n < 0) // Base condition
            return;

        // Recursive call
        printPartten(n - 1, k + 1);

        var i;
        for (i = 0; i < k; i++) // it makes spaces
             document.write("&nbsp;");
        for (i = 0; i < n; i++) // for print *
             document.write("* ");
         document.write("<br/>"); // for next line
    }

    
        var n = 7;

        // Call to printPartten function
        printPartten(n, 0);

// This code is contributed by Rajput-Ji
</script>

Output: 
      * 
     * * 
    * * * 
   * * * * 
  * * * * * 
 * * * * * * 
* * * * * * *

 

Time Complexity: O(n2)
Auxiliary Space: O(n), The extra space is used in recursion call stack.

How to print its reverse pattern? 
simply Just put the recursive line end of the function 

Example: 

Input : 7
Output : 
* * * * * * *
 * * * * * * 
  * * * * *    
   * * * *  
    * * *    
     * *          
      *
C++
// C++ program to print reverse triangular 
// patterns using Recursive
#include <bits/stdc++.h>
using namespace std;

void printPartten(int n, int k)
{
    if (n < 0) // Base condition
        return;
    int i;
    for (i = 0; i < k; i++) // it makes spaces
        cout <<" ";
    for (i = 0; i < n; i++) // for print *
        cout <<"* ";
    cout <<"\n"; // for next line

    // Recursive calls
    printPartten(n - 1, k + 1); 
}

int main()
{
    int n = 7;

    // Call to printPartten function
    printPartten(n, 0); 
    return 0;
}
// this code is contributed by shivanisinghss2110 
C
// C program to print reverse triangular 
// patterns using Recursive
#include <stdio.h>
#include <stdlib.h>

void printPartten(int n, int k)
{
    if (n < 0) // Base condition
        return;
    int i;
    for (i = 0; i < k; i++) // it makes spaces
        printf( " ");
    for (i = 0; i < n; i++) // for print *
        printf("* ");
    printf("\n"); // for next line

    // Recursive calls
    printPartten(n - 1, k + 1); 
}

int main()
{
    int n = 7;

    // Call to printPartten function
    printPartten(n, 0); 
    return 0;
}
Java
// Java program to print reverse triangular 
// patterns using Recursive 
import java.io.*;
public class GFG{ 
static void printPartten(int n, int k) 
{ 
    if (n < 0) // Base condition 
        return; 
    int i; 
    for (i = 0; i < k; i++) // it makes spaces 
        System.out.print(" "); 
    for (i = 0; i < n; i++) // for print * 
        System.out.print("* "); 
    System.out.print("\n"); // for next line 

    // Recursive calls 
    printPartten(n - 1, k + 1); 
} 

public static void main(String[] args) 
{ 
    int n = 7; 

    // Call to printPartten function 
    printPartten(n, 0); 
}
} 
Python 3
# Python 3 program to print reverse 
# triangular patterns using Recursive

def printPartten(n, k):

    if (n < 0): # Base condition
        return;
    for i in range(0, k): # it makes spaces
        print(" ", end = "")
    for i in range(0, n): # for print *
        print("*", end = " ")
    print("\n", end = "") # for next line

    # Recursive calls
    printPartten(n - 1, k + 1); 

# Driver Code
n = 7;

# Call to printPartten function
printPartten(n, 0); 

# This code is contributed 
# by Akanksha Rai
C#
// C# program to print reverse triangular 
// patterns using Recursive 
using System;

class GFG
{ 
static void printPartten(int n, int k) 
{ 
    if (n < 0) // Base condition 
        return; 
    int i; 
    for (i = 0; i < k; i++) // it makes spaces 
        Console.Write(" "); 
    for (i = 0; i < n; i++) // for print * 
        Console.Write("* "); 
    Console.Write("\n"); // for next line 

    // Recursive calls 
    printPartten(n - 1, k + 1); 
} 

// Driver Code
public static void Main() 
{ 
    int n = 7; 

    // Call to printPartten function 
    printPartten(n, 0); 
} 
} 

// This code is contributed 
// by PrinciRaj1992
PHP
<?php
// PHP program to print reverse triangular 
// patterns using Recursive 
function printPartten($n, $k) 
{ 
    if ($n < 0) // Base condition 
        return; 

    for ($i = 0; $i < $k; $i++) // it makes spaces 
        echo(" "); 
    for ($i = 0; $i < $n; $i++) // for print * 
        echo("* "); 
    echo("\n"); // for next line 

    // Recursive calls 
    printPartten($n - 1, $k + 1); 
} 

// Driver Code
$n = 7; 

// Call to printPartten function 
printPartten($n, 0); 

// This code is contributed 
// by Mukul singh
?>
JavaScript
<script>
// C++ program to print reverse triangular 
// patterns using Recursive

function printPartten(n, k)
{
    if (n < 0) // Base condition
        return;
    let i;
    for (i = 0; i < k; i++) // it makes spaces
        document.write(" ");
    for (i = 0; i < n; i++) // for print *
        document.write("* ");
    document.write("<br>"); // for next line

    // Recursive calls
    printPartten(n - 1, k + 1); 
}

//driver code
    let n = 7;

    // Call to printPartten function
    printPartten(n, 0); 
 
// this code is contributed by shivanisinghss2110 
</script>

Output: 
* * * * * * * 
 * * * * * * 
  * * * * * 
   * * * * 
    * * * 
     * * 
      *

 

Time Complexity: O(n2)
Auxiliary Space: O(1), As the function becomes tail recursive no extra stack space is required.


Next Article

Similar Reads