Programs for Printing Pyramid Patterns using Recursion
This article is aimed at giving a recursive implementation for pattern printing.
C++
#include <iostream>
using namespace std;
void printn( int num)
{
if (num == 0)
return ;
cout << "* " ;
printn(num - 1);
}
void pattern( int n, int i)
{
if (n == 0)
return ;
printn(i);
cout << endl;
pattern(n - 1, i + 1);
}
int main()
{
int n = 5;
pattern(n, 1);
return 0;
}
|
Java
import java.io.*;
class GFG
{
static void printn( int num)
{
if (num == 0 )
return ;
System.out.print ( "* " );
printn(num - 1 );
}
static void pattern( int n, int i)
{
if (n == 0 )
return ;
printn(i);
System.out.println();
pattern(n - 1 , i + 1 );
}
public static void main (String[] args)
{
int n = 5 ;
pattern(n, 1 );
}
}
|
Python3
def printn(num):
if (num = = 0 ):
return
print ( "*" , end = " " )
printn(num - 1 )
def pattern(n, i):
if (n = = 0 ):
return
printn(i)
print ( "\n" , end = "")
pattern(n - 1 , i + 1 )
if __name__ = = '__main__' :
n = 5
pattern(n, 1 )
|
C#
using System;
class GFG
{
static void printn( int num)
{
if (num == 0)
return ;
Console.Write( "* " );
printn(num - 1);
}
static void pattern( int n, int i)
{
if (n == 0)
return ;
printn(i);
Console.WriteLine();
pattern(n - 1, i + 1);
}
static public void Main ()
{
int n = 5;
pattern(n, 1);
}
}
|
PHP
<?php
function printn( $num )
{
if ( $num == 0)
return ;
echo "* " ;
printn( $num - 1);
}
function pattern( $n , $i )
{
if ( $n == 0)
return ;
printn( $i );
echo "\n" ;
pattern( $n - 1, $i + 1);
}
$n = 5;
pattern( $n , 1);
?>
|
Javascript
<script>
function printn(num) {
if (num == 0)
return ;
document.write( "* " );
printn(num - 1);
}
function pattern(n , i) {
if (n == 0)
return ;
printn(i);
document.write( "<br/>" );
pattern(n - 1, i + 1);
}
var n = 5;
pattern(n, 1);
</script>
|
Output:
*
* *
* * *
* * * *
* * * * *
- After 180-degree rotation:
C++
#include <iostream>
using namespace std;
void print_space( int space)
{
if (space == 0)
return ;
cout << " "
<< " " ;
print_space(space - 1);
}
void print_asterisk( int asterisk)
{
if (asterisk == 0)
return ;
cout << "* " ;
print_asterisk(asterisk - 1);
}
void pattern( int n, int num)
{
if (n == 0)
return ;
print_space(n - 1);
print_asterisk(num - n + 1);
cout << endl;
pattern(n - 1, num);
}
int main()
{
int n = 5;
pattern(n, n);
return 0;
}
|
Java
import java.util.*;
class GFG
{
static void print_space( int space)
{
if (space == 0 )
{
return ;
}
System.out.print( " " + " " );
print_space(space - 1 );
}
static void print_asterisk( int asterisk)
{
if (asterisk == 0 )
{
return ;
}
System.out.print( "* " );
print_asterisk(asterisk - 1 );
}
static void pattern( int n, int num)
{
if (n == 0 )
{
return ;
}
print_space(n - 1 );
print_asterisk(num - n + 1 );
System.out.println();
pattern(n - 1 , num);
}
public static void main(String[] args)
{
int n = 5 ;
pattern(n, n);
}
}
|
Python3
def print_space(space):
if (space = = 0 ):
return ;
print ( " " , end = " " );
print_space(space - 1 );
def print_asterisk(asterisk):
if (asterisk = = 0 ):
return ;
print ( "*" , end = " " );
print_asterisk(asterisk - 1 );
def pattern(n, num):
if (n = = 0 ):
return ;
print_space(n - 1 );
print_asterisk(num - n + 1 );
print ();
pattern(n - 1 , num);
if __name__ = = '__main__' :
n = 5 ;
pattern(n, n);
|
C#
using System;
class GFG
{
static void print_space( int space)
{
if (space == 0)
return ;
Console.Write( " " + " " );
print_space(space - 1);
}
static void print_asterisk( int asterisk)
{
if (asterisk == 0)
return ;
Console.Write( "* " );
print_asterisk(asterisk - 1);
}
static void pattern( int n, int num)
{
if (n == 0)
return ;
print_space(n - 1);
print_asterisk(num - n + 1);
Console.WriteLine();
pattern(n - 1, num);
}
public static void Main()
{
int n = 5;
pattern(n, n);
}
}
|
PHP
<?php
function print_space( $space )
{
if ( $space == 0)
return ;
echo " " ,
" " ;
print_space( $space - 1);
}
function print_asterisk( $asterisk )
{
if ( $asterisk == 0)
return ;
echo "* " ;
print_asterisk( $asterisk - 1);
}
function pattern( $n , $num )
{
if ( $n == 0)
return ;
print_space( $n - 1);
print_asterisk(( $num - $n ) + 1);
echo "\n" ;
pattern( $n - 1, $num );
}
$n = 5;
pattern( $n , $n );
?>
|
Javascript
<script>
function print_space(space) {
if (space == 0) {
return ;
}
document.write( " " + " " );
print_space(space - 1);
}
function print_asterisk(asterisk) {
if (asterisk == 0) {
return ;
}
document.write( "* " );
print_asterisk(asterisk - 1);
}
function pattern(n , num) {
if (n == 0) {
return ;
}
print_space(n - 1);
print_asterisk(num - n + 1);
document.write( "<br/>" );
pattern(n - 1, num);
}
var n = 5;
pattern(n, n);
</script>
|
Output:
*
* *
* * *
* * * *
* * * * *
C++
#include <iostream>
using namespace std;
void print_space( int space)
{
if (space == 0)
return ;
cout << " " ;
print_space(space - 1);
}
void print_asterisk( int asterisk)
{
if (asterisk == 0)
return ;
cout << "* " ;
print_asterisk(asterisk - 1);
}
void pattern( int n, int num)
{
if (n == 0)
return ;
print_space(n - 1);
print_asterisk(num - n + 1);
cout << endl;
pattern(n - 1, num);
}
int main()
{
int n = 5;
pattern(n, n);
return 0;
}
|
Java
import java.util.*;
class GFG
{
static void print_space( int space)
{
if (space == 0 )
return ;
System.out.print( " " );
print_space(space - 1 );
}
static void print_asterisk( int asterisk)
{
if (asterisk == 0 )
return ;
System.out.print( "* " );
print_asterisk(asterisk - 1 );
}
static void pattern( int n, int num)
{
if (n == 0 )
return ;
print_space(n - 1 );
print_asterisk(num - n + 1 );
System.out.println( "" );
pattern(n - 1 , num);
}
public static void main(String[] args)
{
int n = 5 ;
pattern(n, n);
}
}
|
Python3
def print_space(space):
if (space = = 0 ):
return ;
print ( " " , end = "");
print_space(space - 1 );
def print_asterisk(asterisk):
if (asterisk = = 0 ):
return ;
print ( "* " , end = "");
print_asterisk(asterisk - 1 );
def pattern(n, num):
if (n = = 0 ):
return ;
print_space(n - 1 );
print_asterisk(num - n + 1 );
print ("");
pattern(n - 1 , num);
n = 5 ;
pattern(n, n);
|
C#
using System;
class GFG
{
static void print_space( int space)
{
if (space == 0)
return ;
Console.Write( " " );
print_space(space - 1);
}
static void print_asterisk( int asterisk)
{
if (asterisk == 0)
return ;
Console.Write( "* " );
print_asterisk(asterisk - 1);
}
static void pattern( int n, int num)
{
if (n == 0)
return ;
print_space(n - 1);
print_asterisk(num - n + 1);
Console.WriteLine( "" );
pattern(n - 1, num);
}
public static void Main(String[] args)
{
int n = 5;
pattern(n, n);
}
}
|
PHP
<?php
function print_space( $space )
{
if ( $space == 0)
return ;
echo " " ;
print_space( $space - 1);
}
function print_asterisk( $asterisk )
{
if ( $asterisk == 0)
return ;
echo "* " ;
print_asterisk( $asterisk - 1);
}
function pattern( $n , $num )
{
if ( $n == 0)
return ;
print_space( $n - 1);
print_asterisk( $num - $n + 1);
echo "\n" ;
pattern( $n - 1, $num );
}
$n = 5;
pattern( $n , $n );
?>
|
Javascript
<script>
function print_space(space)
{
if (space == 0)
return ;
document.write( " " );
print_space(space - 1);
}
function print_asterisk(asterisk)
{
if (asterisk == 0)
return ;
document.write( "* " );
print_asterisk(asterisk - 1);
}
function pattern(n,num)
{
if (n == 0)
return ;
print_space(n - 1);
print_asterisk(num - n + 1);
document.write( "<br>" );
pattern(n - 1, num);
}
let n = 5;
pattern(n, n);
</script>
|
Output:
*
* *
* * *
* * * *
* * * * *
C++
#include <iostream>
using namespace std;
void print_row( int no, int val)
{
if (no == 0)
return ;
cout << val << " " ;
print_row(no - 1, val);
}
void pattern( int n, int num)
{
if (n == 0)
return ;
print_row(num - n + 1, num - n + 1);
cout << endl;
pattern(n - 1, num);
}
int main()
{
int n = 5;
pattern(n, n);
}
|
Java
class GFG
{
static void print_row( int no, int val)
{
if (no == 0 )
return ;
System.out.print(val + " " );
print_row(no - 1 , val);
}
static void pattern( int n, int num)
{
if (n == 0 )
return ;
print_row(num - n + 1 , num - n + 1 );
System.out.println();
pattern(n - 1 , num);
}
public static void main(String[] args)
{
int n = 5 ;
pattern(n, n);
}
}
|
Python3
def print_row(no, val):
if (no = = 0 ):
return ;
print (val , end = " " );
print_row(no - 1 , val);
def pattern(n, num):
if (n = = 0 ):
return ;
print_row(num - n + 1 , num - n + 1 );
print ("");
pattern(n - 1 , num);
n = 5 ;
pattern(n, n);
|
C#
using System;
class GFG
{
static void print_row( int no, int val)
{
if (no == 0)
return ;
Console.Write(val + " " );
print_row(no - 1, val);
}
static void pattern( int n, int num)
{
if (n == 0)
return ;
print_row(num - n + 1, num - n + 1);
Console.WriteLine();
pattern(n - 1, num);
}
public static void Main()
{
int n = 5;
pattern(n, n);
}
}
|
PHP
<?php
function print_row( $no , $val )
{
if ( $no == 0)
return ;
echo $val . " " ;
print_row( $no - 1, $val );
}
function pattern( $n , $num )
{
if ( $n == 0)
return ;
print_row( $num - $n + 1,
$num - $n + 1);
echo "\n" ;
pattern( $n - 1, $num );
}
$n = 5;
pattern( $n , $n );
?>
|
Javascript
<script>
function print_row(no, val) {
if (no == 0) return ;
document.write(val + " " );
print_row(no - 1, val);
}
function pattern(n, num) {
if (n == 0) return ;
print_row(num - n + 1, num - n + 1);
document.write( "<br>" );
pattern(n - 1, num);
}
var n = 5;
pattern(n, n);
</script>
|
Output:
1
2 2
3 3 3
4 4 4 4
5 5 5 5 5
- Numbers without reassigning:
C++
#include <iostream>
using namespace std;
int print_row( int ct, int num)
{
if (num == 0)
return ct;
cout << ct << "\t" ;
print_row(ct + 1, num - 1);
}
void pattern( int n, int count, int num)
{
if (n == 0)
return ;
count = print_row(count, num);
cout << endl;
pattern(n - 1, count, num + 1);
}
int main()
{
int n = 5;
pattern(n, 1, 1);
}
|
Java
import java.io.*;
class GFG
{
static int print_row( int ct, int num)
{
if (num == 0 )
return ct;
System.out.print(ct + " " );
return print_row(ct + 1 , num - 1 );
}
static void pattern( int n,
int count, int num)
{
if (n == 0 )
return ;
count = print_row(count, num);
System.out.println();
pattern(n - 1 , count, num + 1 );
}
public static void main (String[] args)
{
int n = 5 ;
pattern(n, 1 , 1 );
}
}
|
Python3
def print_row(ct, num):
if (num = = 0 ):
return ct;
print (ct, end = " " );
return print_row(ct + 1 , num - 1 );
def pattern(n, count, num):
if (n = = 0 ):
return ;
count = print_row(count, num);
print ();
pattern(n - 1 , count, num + 1 );
if __name__ = = '__main__' :
n = 5 ;
pattern(n, 1 , 1 );
|
C#
using System;
class GFG
{
static int print_row( int ct, int num)
{
if (num == 0)
return ct;
Console.Write (ct + " " );
return print_row(ct + 1, num - 1);
}
static void pattern( int n,
int count, int num)
{
if (n == 0)
return ;
count = print_row(count, num);
Console.WriteLine();
pattern(n - 1, count, num + 1);
}
static public void Main ()
{
int n = 5;
pattern(n, 1, 1);
}
}
|
Javascript
<script>
function print_row(ct, num)
{
if (num == 0)
return ct;
document.write(ct + " " );
return print_row(ct + 1, num - 1);
}
function pattern(n, count, num)
{
if (n == 0)
return ;
count = print_row(count, num);
document.write( "<br/>" );
pattern(n - 1, count, num + 1);
}
var n = 5;
pattern(n, 1, 1);
</script>
|
Output:
1
2 3
4 5 6
7 8 9 10
11 12 13 14 15
C++
#include <iostream>
using namespace std;
void print_row( int no, int val)
{
if (no == 0)
return ;
cout << ( char )(val + 64) << " " ;
print_row(no - 1, val);
}
void pattern( int n, int num)
{
if (n == 0)
return ;
print_row(num - n + 1, num - n + 1);
cout << endl;
pattern(n - 1, num);
}
int main()
{
int n = 5;
pattern(n, n);
}
|
Java
class GFG
{
static void print_row( int no, int val)
{
if (no == 0 )
return ;
System.out.print(( char )(val + 64 ) + " " );
print_row(no - 1 , val);
}
static void pattern( int n, int num)
{
if (n == 0 )
return ;
print_row(num - n + 1 , num - n + 1 );
System.out.println();
pattern(n - 1 , num);
}
public static void main(String[] args)
{
int n = 5 ;
pattern(n, n);
}
}
|
Python3
def print_row(no, val):
if (no = = 0 ):
return ;
print ( chr (val + 64 ), end = " " );
print_row(no - 1 , val);
def pattern(n, num):
if (n = = 0 ):
return ;
print_row(num - n + 1 , num - n + 1 );
print ();
pattern(n - 1 , num);
if __name__ = = '__main__' :
n = 5 ;
pattern(n, n);
|
C#
using System;
class GFG
{
static void print_row( int no, int val)
{
if (no == 0)
return ;
Console.Write(( char )(val + 64) + " " );
print_row(no - 1, val);
}
static void pattern( int n, int num)
{
if (n == 0)
return ;
print_row(num - n + 1, num - n + 1);
Console.WriteLine();
pattern(n - 1, num);
}
public static void Main(String[] args)
{
int n = 5;
pattern(n, n);
}
}
|
Javascript
<script>
function print_row(no, val)
{
if (no == 0)
return ;
document.write(String.fromCharCode(val + 64) + " " );
print_row(no - 1, val);
}
function pattern(n, num)
{
if (n == 0)
return ;
print_row(num - n + 1, num - n + 1);
document.write( "</br>" );
pattern(n - 1, num);
}
let n = 5;
pattern(n, n);
</script>
|
Output:
A
B B
C C C
D D D D
E E E E E
- Continuous Character pattern:
C++
#include <iostream>
using namespace std;
int print_row( int ct, int num)
{
if (num == 0)
return ct;
cout << ( char )(ct + 64) << " " ;
print_row(ct + 1, num - 1);
}
void pattern( int n, int count, int num)
{
if (n == 0)
return ;
count = print_row(count, num);
cout << endl;
pattern(n - 1, count, num + 1);
}
int main()
{
int n = 5;
pattern(n, 1, 1);
}
|
Java
class GFG
{
static int print_row( int ct, int num)
{
if (num == 0 )
return ct;
System.out.print(( char )(ct + 64 ) + " " );
print_row(ct + 1 , num - 1 );
return num + ct;
}
static void pattern( int n, int count, int num)
{
if (n == 0 )
return ;
count = print_row(count, num);
System.out.println();
pattern(n - 1 , count, num + 1 );
}
public static void main(String[] args)
{
int n = 5 ;
pattern(n, 1 , 1 );
}
}
|
Python3
def print_row(ct, num):
if (num = = 0 ):
return ct;
print ( chr (ct + 64 ), end = " " );
print_row(ct + 1 , num - 1 );
return num + ct;
def pattern(n, count, num):
if (n = = 0 ):
return ;
count = print_row(count, num);
print ();
pattern(n - 1 , count, num + 1 );
if __name__ = = '__main__' :
n = 5 ;
pattern(n, 1 , 1 );
|
C#
using System;
class GFG
{
static int print_row( int ct, int num)
{
if (num == 0)
return ct;
Console.Write(( char )(ct + 64) + " " );
print_row(ct + 1, num - 1);
return num + ct;
}
static void pattern( int n, int count, int num)
{
if (n == 0)
return ;
count = print_row(count, num);
Console.WriteLine();
pattern(n - 1, count, num + 1);
}
public static void Main(String[] args)
{
int n = 5;
pattern(n, 1, 1);
}
}
|
Javascript
<script>
function print_row( ct, num)
{
if (num == 0)
return ct;
document.write(String.fromCharCode(ct + 64) + " " );
print_row(ct + 1, num - 1);
return num + ct;
}
function pattern( n, count, num)
{
if (n == 0)
return ;
count = print_row(count, num);
document.write( "<br>" );
pattern(n - 1, count, num + 1);
}
var n = 5;
pattern(n, 1, 1);
</script>
|
Output:
A
B C
D E F
G H I J
K L M N O
Time Complexity and Space Complexity of the above Programs
Time Complexity: O(n2)
Auxiliary Space: O(n2), due to recursion stack.
Last Updated :
13 Jan, 2023
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...