Recursive program to print triangular patterns
Last Updated :
13 Mar, 2023
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(" ");
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.