This article is aimed at giving a recursive implementation for pattern printing.
- Pattern 1: Example:
Input: 5
Output:
* * * * * * * * * *
* * * * * * * *
* * * * * *
* * * *
* *
- Implementation:
C++
#include <iostream>
using namespace std;
void print_asterisk( int asterisk)
{
if (asterisk == 0)
return ;
cout << "* " ;
print_asterisk(asterisk - 1);
}
void print_space( int space)
{
if (space == 0)
return ;
cout << " "
<< " " ;
print_space(space - 1);
}
void pattern( int n, int num)
{
if (n == 0)
return ;
print_asterisk(n);
print_space(2 * (num - n) + 1);
print_asterisk(n);
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_asterisk( int asterisk)
{
if (asterisk == 0 )
return ;
System.out.print( "* " );
print_asterisk(asterisk - 1 );
}
static void print_space( int space)
{
if (space == 0 )
return ;
System.out.print( " " );
System.out.print( " " );
print_space(space - 1 );
}
static void pattern( int n, int num)
{
if (n == 0 )
return ;
print_asterisk(n);
print_space( 2 * (num - n) + 1 );
print_asterisk(n);
System.out.print( "\n" );
pattern(n - 1 , num);
}
public static void main(String[] args)
{
int n = 5 ;
pattern(n, n);
}
}
|
Python3
def print_asterisk(asterisk):
if (asterisk = = 0 ):
return ;
print ( "* " , end = "");
print_asterisk(asterisk - 1 );
def print_space(space):
if (space = = 0 ):
return ;
print ( " " , end = "");
print ( " " , end = "");
print_space(space - 1 );
def pattern(n, num):
if (n = = 0 ):
return ;
print_asterisk(n);
print_space( 2 * (num - n) + 1 );
print_asterisk(n);
print ("");
pattern(n - 1 , num);
if __name__ = = '__main__' :
n = 5 ;
pattern(n, n);
|
C#
using System;
class GFG
{
static void print_asterisk( int asterisk)
{
if (asterisk == 0)
return ;
Console.Write( "* " );
print_asterisk(asterisk - 1);
}
static void print_space( int space)
{
if (space == 0)
return ;
Console.Write( " " );
Console.Write( " " );
print_space(space - 1);
}
static void pattern( int n, int num)
{
if (n == 0)
return ;
print_asterisk(n);
print_space(2 * (num - n) + 1);
print_asterisk(n);
Console.Write( "\n" );
pattern(n - 1, num);
}
public static void Main(String[] args)
{
int n = 5;
pattern(n, n);
}
}
|
JavaScript
<script>
function print_asterisk(asterisk)
{
if (asterisk === 0) return ;
document.write( "*" );
print_asterisk(asterisk - 1);
}
function print_space(space)
{
if (space === 0) return ;
document.write( "" + "" );
print_space(space - 1);
}
function pattern(n, num)
{
if (n === 0) return ;
print_asterisk(n);
print_space(2 * (num - n) + 1);
print_asterisk(n);
document.write( "<br>" );
pattern(n - 1, num);
}
var n = 5;
pattern(n, n);
</script>
|
- Output:
* * * * * * * * * *
* * * * * * * *
* * * * * *
* * * *
* *
Time Complexity: O(n),The time complexity of the above code is O(n) as the function is called n times.
Space Complexity: O(n),The space complexity of the above code is O(n) as the recursive call stack is of size n.
- Pattern 2: Example:
Input: 5
Output:
* *
* * * *
* * * * * *
* * * * * * * *
* * * * * * * * * *
- Implementation:
C++
#include <iostream>
using namespace std;
void print_asterisk( int asterisk)
{
if (asterisk == 0)
return ;
cout << "* " ;
print_asterisk(asterisk - 1);
}
void print_space( int space)
{
if (space == 0)
return ;
cout << " "
<< " " ;
print_space(space - 1);
}
void pattern( int n, int num)
{
if (n == 0)
return ;
print_asterisk(num - n + 1);
print_space(2 * n - 1);
print_asterisk(num - n + 1);
cout << endl;
pattern(n - 1, num);
}
int main()
{
int n = 5;
pattern(n, n);
return 0;
}
|
Java
class GFG
{
static void print_asterisk( int asterisk)
{
if (asterisk == 0 )
return ;
System.out.print( "* " );
print_asterisk(asterisk - 1 );
}
static void print_space( int space)
{
if (space == 0 )
return ;
System.out.print( " " );
System.out.print( " " );
print_space(space - 1 );
}
static void pattern( int n, int num)
{
if (n == 0 )
return ;
print_asterisk(num - n + 1 );
print_space( 2 * 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_asterisk(asterisk):
if (asterisk = = 0 ):
return ;
print ( "*" , end = " " );
print_asterisk(asterisk - 1 );
def print_space(space):
if (space = = 0 ):
return ;
print ( " " , end = "");
print ( " " , end = "");
print_space(space - 1 );
def pattern(n, num):
if (n = = 0 ):
return ;
print_asterisk(num - n + 1 );
print_space( 2 * 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_asterisk( int asterisk)
{
if (asterisk == 0)
return ;
Console.Write( "* " );
print_asterisk(asterisk - 1);
}
static void print_space( int space)
{
if (space == 0)
return ;
Console.Write( " " );
Console.Write( " " );
print_space(space - 1);
}
static void pattern( int n, int num)
{
if (n == 0)
return ;
print_asterisk(num - n + 1);
print_space(2 * 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);
}
}
|
JavaScript
<script>
function print_asterisk(asterisk)
{
if (asterisk == 0)
return ;
document.write( "* " );
print_asterisk(asterisk - 1);
}
function print_space(space)
{
if (space == 0)
return ;
document.write( "" , "" , "" );
print_space(space - 1);
}
function pattern(n, num)
{
if (n == 0)
return ;
print_asterisk(num - n + 1);
print_space(2 * n + 1);
print_asterisk(num - n + 1);
document.write( "<br>" );
pattern(n - 1, num);
}
var n = 5;
pattern(n, n);
</script>
|
- Output:
* *
* * * *
* * * * * *
* * * * * * * *
* * * * * * * * * *
Time complexity: O(n),The time complexity of the above program is O(n) where n is the number of asterisks in the pattern.
Space complexity: O(n),The space complexity of the above program is O(n) because of the recursive stack that is used for the recursive calls.
- Pattern 3: Example:
Input: 5
Output:
* * * * *
* * * *
* * *
* *
*
*
* *
* * *
* * * *
* * * * *
- Implementation:
C++
#include <iostream>
using namespace std;
void print_asterisk( int asterisk)
{
if (asterisk == 0)
return ;
cout << "* " ;
print_asterisk(asterisk - 1);
}
void pattern_upper( int n, int num)
{
if (n == 0)
return ;
print_asterisk(n);
cout << endl;
pattern_upper(n - 1, num);
}
void pattern_lower( int n, int num)
{
if (n == 0)
return ;
print_asterisk(num - n + 1);
cout << endl;
pattern_lower(n - 1, num);
}
void pattern( int n, int num)
{
pattern_upper(n, num);
pattern_lower(n - 1, num);
}
int main()
{
int n = 5;
pattern(n, n);
return 0;
}
|
Java
class GFG
{
static void print_asterisk( int asterisk)
{
if (asterisk == 0 )
return ;
System.out.print( "* " );
print_asterisk(asterisk - 1 );
}
static void pattern_upper( int n, int num)
{
if (n == 0 )
return ;
print_asterisk(n);
System.out.println();
pattern_upper(n - 1 , num);
}
static void pattern_lower( int n, int num)
{
if (n == 0 )
return ;
print_asterisk(num - n + 1 );
System.out.println();
pattern_lower(n - 1 , num);
}
static void pattern( int n, int num)
{
pattern_upper(n, num);
pattern_lower(n - 1 , num);
}
public static void main(String[] args)
{
int n = 5 ;
pattern(n, n);
}
}
|
Python3
def print_asterisk(asterisk):
if (asterisk = = 0 ):
return ;
print ( "*" , end = " " );
print_asterisk(asterisk - 1 );
def pattern_upper(n, num):
if (n = = 0 ):
return ;
print_asterisk(n);
print ();
pattern_upper(n - 1 , num);
def pattern_lower(n, num):
if (n = = 0 ):
return ;
print_asterisk(num - n + 1 );
print ();
pattern_lower(n - 1 , num);
def pattern(n, num):
pattern_upper(n, num);
pattern_lower(n - 1 , num);
if __name__ = = '__main__' :
n = 5 ;
pattern(n, n);
|
C#
using System;
class GFG
{
static void print_asterisk( int asterisk)
{
if (asterisk == 0)
return ;
Console.Write( "* " );
print_asterisk(asterisk - 1);
}
static void pattern_upper( int n, int num)
{
if (n == 0)
return ;
print_asterisk(n);
Console.WriteLine();
pattern_upper(n - 1, num);
}
static void pattern_lower( int n, int num)
{
if (n == 0)
return ;
print_asterisk(num - n + 1);
Console.WriteLine();
pattern_lower(n - 1, num);
}
static void pattern( int n, int num)
{
pattern_upper(n, num);
pattern_lower(n - 1, num);
}
public static void Main(String[] args)
{
int n = 5;
pattern(n, n);
}
}
|
JavaScript
<script>
function print_asterisk(asterisk) {
if (asterisk == 0)
return ;
document.write( "* " );
print_asterisk(asterisk - 1);
}
function pattern_upper(n , num) {
if (n == 0)
return ;
print_asterisk(n);
document.write( "<br/>" );
pattern_upper(n - 1, num);
}
function pattern_lower(n , num) {
if (n == 0)
return ;
print_asterisk(num - n + 1);
document.write( "<br/>" );
pattern_lower(n - 1, num);
}
function pattern(n , num) {
pattern_upper(n, num);
pattern_lower(n - 1, num);
}
var n = 5;
pattern(n, n);
</script>
|
- Output:
* * * * *
* * * *
* * *
* *
*
*
* *
* * *
* * * *
* * * * *
Time complexity: O(n^2), where n is the input size.
Space complexity: O(n), where n is the input size.
- Pattern 4: Example:
Input: 5
Output:
* * * * * * * * * *
* * * * * * * *
* * * * * *
* * * *
* *
* * * *
* * * * * *
* * * * * * * *
* * * * * * * * * *
- Implementation:
C++
#include <iostream>
using namespace std;
void print_asterisk( int asterisk)
{
if (asterisk == 0)
return ;
cout << "* " ;
print_asterisk(asterisk - 1);
}
void print_space( int space)
{
if (space == 0)
return ;
cout << " "
<< " " ;
print_space(space - 1);
}
void pattern_upper( int n, int num)
{
if (n == 0)
return ;
print_asterisk(n);
print_space(2 * (num - n) + 1);
print_asterisk(n);
cout << endl;
pattern_upper(n - 1, num);
}
void pattern_lower( int n, int num)
{
if (n == 0)
return ;
print_asterisk(num - n + 1);
print_space(2 * n - 1);
print_asterisk(num - n + 1);
cout << endl;
pattern_lower(n - 1, num);
}
void pattern( int n, int num)
{
pattern_upper(n, num);
pattern_lower(n - 1, num);
}
int main()
{
int n = 5;
pattern(n, n);
return 0;
}
|
Java
import java.util.*;
class GFG
{
static void print_asterisk( int asterisk)
{
if (asterisk == 0 )
return ;
System.out.print( "* " );
print_asterisk(asterisk - 1 );
}
static void print_space( int space)
{
if (space == 0 )
return ;
System.out.print( " " );
System.out.print( " " );
print_space(space - 1 );
}
static void pattern_upper( int n, int num)
{
if (n == 0 )
return ;
print_asterisk(n);
print_space( 2 * (num - n) + 1 );
print_asterisk(n);
System.out.print( "\n" );
pattern_upper(n - 1 , num);
}
static void pattern_lower( int n, int num)
{
if (n == 0 )
return ;
print_asterisk(num - n + 1 );
print_space( 2 * n - 1 );
print_asterisk(num - n + 1 );
System.out.print( "\n" );
pattern_lower(n - 1 , num);
}
static void pattern( int n, int num)
{
pattern_upper(n, num);
pattern_lower(n - 1 , num);
}
public static void main(String[] args)
{
int n = 5 ;
pattern(n, n);
}
}
|
Python3
def print_asterisk(asterisk):
if (asterisk = = 0 ):
return ;
print ( "* " , end = "");
print_asterisk(asterisk - 1 );
def print_space(space):
if (space = = 0 ):
return ;
print ( " " , end = "");
print ( " " , end = "");
print_space(space - 1 );
def pattern_upper(n, num):
if (n = = 0 ):
return ;
print_asterisk(n);
print_space( 2 * (num - n) + 1 );
print_asterisk(n);
print ();
pattern_upper(n - 1 , num);
def pattern_lower(n, num):
if (n = = 0 ):
return ;
print_asterisk(num - n + 1 );
print_space( 2 * n - 1 );
print_asterisk(num - n + 1 );
print ();
pattern_lower(n - 1 , num);
def pattern(n, num):
pattern_upper(n, num);
pattern_lower(n - 1 , num);
if __name__ = = '__main__' :
n = 5 ;
pattern(n, n);
|
C#
using System;
class GFG
{
static void print_asterisk( int asterisk)
{
if (asterisk == 0)
return ;
Console.Write( "* " );
print_asterisk(asterisk - 1);
}
static void print_space( int space)
{
if (space == 0)
return ;
Console.Write( " " );
Console.Write( " " );
print_space(space - 1);
}
static void pattern_upper( int n, int num)
{
if (n == 0)
return ;
print_asterisk(n);
print_space(2 * (num - n) + 1);
print_asterisk(n);
Console.Write( "\n" );
pattern_upper(n - 1, num);
}
static void pattern_lower( int n, int num)
{
if (n == 0)
return ;
print_asterisk(num - n + 1);
print_space(2 * n - 1);
print_asterisk(num - n + 1);
Console.Write( "\n" );
pattern_lower(n - 1, num);
}
static void pattern( int n, int num)
{
pattern_upper(n, num);
pattern_lower(n - 1, num);
}
public static void Main(String[] args)
{
int n = 5;
pattern(n, n);
}
}
|
JavaScript
<script>
function print_asterisk(asterisk)
{
if (asterisk == 0)
return ;
document.write( "* " );
print_asterisk(asterisk - 1);
}
function print_space(space)
{
if (space == 0)
return ;
document.write( "" , "" , "" );
print_space(space - 1);
}
function pattern_upper( n, num)
{
if (n == 0)
return ;
print_asterisk(n);
print_space(2 * (num - n) + 1);
print_asterisk(n);
document.write( "<br>" );
pattern_upper(n - 1, num);
}
function pattern_lower(n, num)
{
if (n == 0)
return ;
print_asterisk(num - n + 1);
print_space(2 * n - 1);
print_asterisk(num - n + 1);
document.write( "<br>" );
pattern_lower(n - 1, num);
}
function pattern(n, num)
{
pattern_upper(n, num);
pattern_lower(n - 1, num);
}
n = 5;
pattern(n, n);
</script>
|
- Output:
* * * * * * * * * *
* * * * * * * *
* * * * * *
* * * *
* *
* * * *
* * * * * *
* * * * * * * *
* * * * * * * * * *
- Pattern 5: Example:
Input: 5
Output:
* *
* * * *
* * * * * *
* * * * * * * *
* * * * * * * * * *
* * * * * * * *
* * * * * *
* * * *
* *
- Implementation:
C++
#include <iostream>
using namespace std;
void print_asterisk( int asterisk)
{
if (asterisk == 0)
return ;
cout << "* " ;
print_asterisk(asterisk - 1);
}
void print_space( int space)
{
if (space == 0)
return ;
cout << " "
<< " " ;
print_space(space - 1);
}
void pattern_upper( int n, int num)
{
if (n == 0)
return ;
print_asterisk(num - n + 1);
print_space(2 * n - 1);
print_asterisk(num - n + 1);
cout << endl;
pattern_upper(n - 1, num);
}
void pattern_lower( int n, int num)
{
if (n == 0)
return ;
print_asterisk(n);
print_space(2 * (num - n) + 1);
print_asterisk(n);
cout << endl;
pattern_lower(n - 1, num);
}
void pattern( int n, int num)
{
pattern_upper(n, num);
pattern_lower(n - 1, num);
}
int main()
{
int n = 5;
pattern(n, n);
return 0;
}
|
Java
class GFG
{
static void print_asterisk( int asterisk)
{
if (asterisk == 0 )
return ;
System.out.print( "* " );
print_asterisk(asterisk - 1 );
}
static void print_space( int space)
{
if (space == 0 )
return ;
System.out.print( " " );
System.out.print( " " );
print_space(space - 1 );
}
static void pattern_upper( int n, int num)
{
if (n == 0 )
return ;
print_asterisk(num - n + 1 );
print_space( 2 * n - 1 );
print_asterisk(num - n + 1 );
System.out.println();
pattern_upper(n - 1 , num);
}
static void pattern_lower( int n, int num)
{
if (n == 0 )
return ;
print_asterisk(n);
print_space( 2 * (num - n) + 1 );
print_asterisk(n);
System.out.println();
pattern_lower(n - 1 , num);
}
static void pattern( int n, int num)
{
pattern_upper(n, num);
pattern_lower(n - 1 , num);
}
public static void main(String[] args)
{
int n = 5 ;
pattern(n, n);
}
}
|
Python3
def print_asterisk(asterisk):
if (asterisk = = 0 ):
return ;
print ( "* " , end = "");
print_asterisk(asterisk - 1 );
def print_space(space):
if (space = = 0 ):
return ;
print ( " " , end = "");
print ( " " , end = "");
print_space(space - 1 );
def pattern_upper(n, num):
if (n = = 0 ):
return ;
print_asterisk(num - n + 1 );
print_space( 2 * n - 1 );
print_asterisk(num - n + 1 );
print ();
pattern_upper(n - 1 , num);
def pattern_lower(n, num):
if (n = = 0 ):
return ;
print_asterisk(n);
print_space( 2 * (num - n) + 1 );
print_asterisk(n);
print ();
pattern_lower(n - 1 , num);
def pattern(n, num):
pattern_upper(n, num);
pattern_lower(n - 1 , num);
if __name__ = = '__main__' :
n = 5 ;
pattern(n, n);
|
C#
using System;
class GFG
{
static void print_asterisk( int asterisk)
{
if (asterisk == 0)
return ;
Console.Write( "* " );
print_asterisk(asterisk - 1);
}
static void print_space( int space)
{
if (space == 0)
return ;
Console.Write( " " );
Console.Write( " " );
print_space(space - 1);
}
static void pattern_upper( int n, int num)
{
if (n == 0)
return ;
print_asterisk(num - n + 1);
print_space(2 * n - 1);
print_asterisk(num - n + 1);
Console.WriteLine();
pattern_upper(n - 1, num);
}
static void pattern_lower( int n, int num)
{
if (n == 0)
return ;
print_asterisk(n);
print_space(2 * (num - n) + 1);
print_asterisk(n);
Console.WriteLine();
pattern_lower(n - 1, num);
}
static void pattern( int n, int num)
{
pattern_upper(n, num);
pattern_lower(n - 1, num);
}
public static void Main(String[] args)
{
int n = 5;
pattern(n, n);
}
}
|
JavaScript
<script>
function print_asterisk(asterisk)
{
if (asterisk == 0)
return ;
document.write( "* " );
print_asterisk(asterisk - 1);
}
function print_space(space)
{
if (space == 0)
return ;
document.write( " " );
document.write( " " );
print_space(space - 1);
}
function pattern_upper(n,num)
{
if (n == 0)
return ;
print_asterisk(num - n + 1);
print_space(2 * n - 1);
print_asterisk(num - n + 1);
document.write( "<br>" );
pattern_upper(n - 1, num);
}
function pattern_lower(n,num)
{
if (n == 0)
return ;
print_asterisk(n);
print_space(2 * (num - n) + 1);
print_asterisk(n);
document.write( "<br>" );
pattern_lower(n - 1, num);
}
function pattern(n,num)
{
pattern_upper(n, num);
pattern_lower(n - 1, num);
}
let n = 5;
pattern(n, n);
</script>
|
- Output:
* *
* * * *
* * * * * *
* * * * * * * *
* * * * * * * * * *
* * * * * * * *
* * * * * *
* * * *
* *