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++
#include <iostream>
using namespace std;
void printPartten( int n, int k)
{
if (n < 0)
return ;
printPartten(n - 1, k + 1);
int i;
for (i = 0; i < k; i++)
cout << " " ;
for (i = 0; i < n; i++)
printf ( "* " );
printf ( "\n" );
}
int main()
{
int n = 7;
printPartten(n, 0);
return 0;
}
|
Java
import java.io.*;
public class GFG{
static void printPartten( int n, int k)
{
if (n < 0 )
return ;
printPartten(n - 1 , k + 1 );
int i;
for (i = 0 ; i < k; i++)
System.out.printf( " " );
for (i = 0 ; i < n; i++)
System.out.printf( "* " );
System.out.printf( "\n" );
}
public static void main(String[]args)
{
int n = 7 ;
printPartten(n, 0 );
}
}
|
Python3
def printPartten(n, k):
if (n < 0 ):
return ;
printPartten(n - 1 , k + 1 );
for i in range ( 0 , k):
print ( " " , end = "");
for i in range ( 0 , n):
print ( "* " , end = "");
print ( "\n" , end = "");
n = 7 ;
printPartten(n, 0 );
|
C#
using System;
class GFG
{
static void printPartten( int n, int k)
{
if (n < 0)
return ;
printPartten(n - 1, k + 1);
int i;
for (i = 0; i < k; i++)
Console.Write( " " );
for (i = 0; i < n; i++)
Console.Write( "* " );
Console.Write( "\n" );
}
public static void Main()
{
int n = 7;
printPartten(n, 0);
}
}
|
PHP
<?php
function printPartten( $n , $k )
{
if ( $n < 0)
return ;
printPartten( $n - 1, $k + 1);
for ( $i = 0; $i < $k ; $i ++)
echo " " ;
for ( $i = 0; $i < $n ; $i ++)
echo ( "* " );
echo ( "\n" );
}
$n = 7;
printPartten( $n , 0);
?>
|
Javascript
<script>
function printPartten(n , k) {
if (n < 0)
return ;
printPartten(n - 1, k + 1);
var i;
for (i = 0; i < k; i++)
document.write( " " );
for (i = 0; i < n; i++)
document.write( "* " );
document.write( "<br/>" );
}
var n = 7;
printPartten(n, 0);
</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++
#include <bits/stdc++.h>
using namespace std;
void printPartten( int n, int k)
{
if (n < 0)
return ;
int i;
for (i = 0; i < k; i++)
cout << " " ;
for (i = 0; i < n; i++)
cout << "* " ;
cout << "\n" ;
printPartten(n - 1, k + 1);
}
int main()
{
int n = 7;
printPartten(n, 0);
return 0;
}
|
C
#include <stdio.h>
#include <stdlib.h>
void printPartten( int n, int k)
{
if (n < 0)
return ;
int i;
for (i = 0; i < k; i++)
printf ( " " );
for (i = 0; i < n; i++)
printf ( "* " );
printf ( "\n" );
printPartten(n - 1, k + 1);
}
int main()
{
int n = 7;
printPartten(n, 0);
return 0;
}
|
Java
import java.io.*;
public class GFG{
static void printPartten( int n, int k)
{
if (n < 0 )
return ;
int i;
for (i = 0 ; i < k; i++)
System.out.print( " " );
for (i = 0 ; i < n; i++)
System.out.print( "* " );
System.out.print( "\n" );
printPartten(n - 1 , k + 1 );
}
public static void main(String[] args)
{
int n = 7 ;
printPartten(n, 0 );
}
}
|
Python 3
def printPartten(n, k):
if (n < 0 ):
return ;
for i in range ( 0 , k):
print ( " " , end = "")
for i in range ( 0 , n):
print ( "*" , end = " " )
print ( "\n" , end = "")
printPartten(n - 1 , k + 1 );
n = 7 ;
printPartten(n, 0 );
|
C#
using System;
class GFG
{
static void printPartten( int n, int k)
{
if (n < 0)
return ;
int i;
for (i = 0; i < k; i++)
Console.Write( " " );
for (i = 0; i < n; i++)
Console.Write( "* " );
Console.Write( "\n" );
printPartten(n - 1, k + 1);
}
public static void Main()
{
int n = 7;
printPartten(n, 0);
}
}
|
PHP
<?php
function printPartten( $n , $k )
{
if ( $n < 0)
return ;
for ( $i = 0; $i < $k ; $i ++)
echo ( " " );
for ( $i = 0; $i < $n ; $i ++)
echo ( "* " );
echo ( "\n" );
printPartten( $n - 1, $k + 1);
}
$n = 7;
printPartten( $n , 0);
?>
|
Javascript
<script>
function printPartten(n, k)
{
if (n < 0)
return ;
let i;
for (i = 0; i < k; i++)
document.write( "Â " );
for (i = 0; i < n; i++)
document.write( "* " );
document.write( "<br>" );
printPartten(n - 1, k + 1);
}
let n = 7;
printPartten(n, 0);
</script>
|
Output:
* * * * * * *
* * * * * *
* * * * *
* * * *
* * *
* *
*
Time Complexity: O(n2)
Auxiliary Space: O(1), As the function becomes tail recursive no extra stack space is required.
Share your thoughts in the comments
Please Login to comment...