Friday, December 27, 2024
Google search engine
HomeData Modelling & AIPrint reverse of a string using recursion

Print reverse of a string using recursion

Write a recursive function to print the reverse of a given string. 
Code: 

C++




// C++ program to reverse a string using recursion
#include <bits/stdc++.h>
using namespace std;
 
/* Function to print reverse of the passed string */
void reverse(string str)
{
    if(str.size() == 0)
    {
        return;
    }
    reverse(str.substr(1));
    cout << str[0];
}
 
/* Driver program to test above function */
int main()
{
    string a = "Geeks for Geeks";
    reverse(a);
    return 0;
}
 
// This is code is contributed by rathbhupendra


C




// C program to reverse a string using recursion
# include <stdio.h>
 
/* Function to print reverse of the passed string */
void reverse(char *str)
{
   if (*str)
   {
       reverse(str+1);
       printf("%c", *str);
   }
}
 
/* Driver program to test above function */
int main()
{
   char a[] = "Geeks for Geeks";
   reverse(a);
   return 0;
}


Java




// Java program to reverse a string using recursion
 
class StringReverse
{
    /* Function to print reverse of the passed string */
    void reverse(String str)
    {
        if ((str==null)||(str.length() <= 1))
           System.out.println(str);
        else
        {
            System.out.print(str.charAt(str.length()-1));
            reverse(str.substring(0,str.length()-1));
        }
    }
     
    /* Driver program to test above function */
    public static void main(String[] args)
    {
        String str = "Geeks for Geeks";
        StringReverse obj = new StringReverse();
        obj.reverse(str);
    }   
}


Python




# Python program to reverse a string using recursion
 
# Function to print reverse of the passed string
def reverse(string):
    if len(string) == 0:
        return
     
    temp = string[0]
    reverse(string[1:])
    print(temp, end='')
 
# Driver program to test above function
string = "Geeks for Geeks"
reverse(string)
 
# A single line statement to reverse string in python
# string[::-1]
 
# This code is contributed by Bhavya Jain


C#




// C# program to reverse
// a string using recursion
using System;
 
class GFG
{
    // Function to print reverse
    // of the passed string
    static void reverse(String str)
    {
        if ((str == null) || (str.Length <= 1))
        Console.Write(str);
     
        else
        {
            Console.Write(str[str.Length-1]);
            reverse(str.Substring(0,(str.Length-1)));
        }
    }
     
    // Driver Code
    public static void Main()
    {
        String str = "Geeks for Geeks";
        reverse(str);
    }
}
 
// This code is contributed by Sam007


Javascript




<script>
        // JavaScript Program for the above approach
 
 
        /* Function to print reverse of the passed string */
        function reverse(str, len) {
            if (len == str.length) {
                return;
            }
            reverse(str, len + 1);
 
            document.write(str[len]);
 
        }
 
        /* Driver program to test above function */
 
        let a = "Geeks for Geeks";
 
        reverse(a, 0);
 
    // This code is contributed by Potta Lokesh
    </script>


PHP




<?php
// PHP program to reverse
// a string using recursion
 
// Function to print reverse
// of the passed string
function reverse($str)
{
    if (($str == null) ||
        (strlen($str) <= 1))
    echo ($str);
 
    else
    {
        echo ($str[strlen($str) - 1]);
        reverse(substr($str, 0,
               (strlen($str) - 1)));
    }
}
 
// Driver Code
$str = "Geeks for Geeks";
reverse($str);
 
// This code is contributed by
// Manish Shaw(manishshaw1)
?>


Output: 
 

skeeG rof skeeG

Explanation: Recursive function (reverse) takes string pointer (str) as input and calls itself with next location to passed pointer (str+1). Recursion continues this way when the pointer reaches ‘\0’, all functions accumulated in stack print char at passed location (str) and return one by one.

Time Complexity: O(n) where n is the length of string
See Reverse a string for other methods to reverse string.
Auxiliary Space: O(n)

Efficient Approach: 

We can store each character in recursive stack and then can print while coming back as shown in the below code: 

C++




// C++ program to reverse a string using recursion
#include <bits/stdc++.h>
using namespace std;
 
/* Function to print reverse of the passed string */
void reverse(char *str, int index, int n)
{
    if(index == n)      // return if we reached at last index or at the end of the string
    {
        return;
    }
    char temp = str[index];    // storing each character starting from index 0 in function call stack;
    reverse(str, index+1, n);  // calling recursive function by increasing index everytime
    cout << temp;              // printing each stored character while recurring back
}
 
/* Driver program to test above function */
int main()
{
    char a[] = "Geeks for Geeks";
    int n = sizeof(a) / sizeof(a[0]);
    reverse(a, 0, n);
    return 0;
}
 
// This is code is contributed by anuragayu


C




// C program to reverse a string using recursion
 
#include <stdio.h>
 
/* Function to print reverse of the passed string */
void reverse(char *str, int index, int n)
{
    if(index == n)      // return if we reached at last index or at the end of the string
    {
        return;
    }
    char temp = str[index];    // storing each character starting from index 0 in function call stack;
    reverse(str, index+1, n);  // calling recursive function by increasing index everytime
    printf("%c", temp);              // printing each stored character while recurring back
}
 
/* Driver program to test above function */
 
int main() {
   
    char a[] = "Geeks for Geeks";
    int n = sizeof(a) / sizeof(a[0]);
    reverse(a, 0, n);
    return 0;
}
 
// This is code is contributed by anuragayu


Java




/*package whatever //do not write package name here */
import java.io.*;
 
class GFG {
 
  /* Function to print reverse of the passed string */
  static void reverse(char[] str, int index, int n)
  {
    if (index == n) // return if we reached at last index or at the end of the string
    {
      return;
    }
    char temp = str[index]; // storing each character starting from index 0 in function call stack;
    reverse(str, index + 1, n); // calling recursive function by increasing index everytime
    System.out.print(temp); // printing each stored character while recurring back
  }
 
  public static void main(String[] args)
  {
    char a[] = "Geeks for Geeks".toCharArray();
    int n = a.length;
    reverse(a, 0, n);
  }
}
 
// This code is contributed by aadityaburujwale.


Python3




# Python3 program to reverse a string using recursion
def reverse(string, index, n):
    if index == n:   # return if we reached at last index or at the end of the string
        return
    temp = string[index]   # storing each character starting from index 0 in function call stack;
    reverse(string, index+1, n)  # calling recursive function by increasing index everytime
    print(temp, end="")   # printing each stored character while recurring back
 
# Driver code
string = "Geeks for Geeks"
n = len(string)
reverse(string, 0, n)
 
# This code is contributed by Potta Lokesh


C#




// Include namespace system
using System;
 
public class GFG
{
  // Function to print reverse of the passed string
  public static void reverse(char[] str, int index, int n)
  {
    if (index == n)
    {
      // return if we reached at last index or at the end of the string
      return;
    }
    var temp = str[index];
 
    // storing each character starting from index 0 in function call stack;
    GFG.reverse(str, index + 1, n);
 
    // calling recursive function by increasing index everytime
    Console.Write(temp);
  }
  public static void Main(String[] args)
  {
    char[] a = "Geeks for Geeks".ToCharArray();
    var n = a.Length;
    GFG.reverse(a, 0, n);
  }
}
 
// This code is contributed by aadityaburujwale.


Javascript




// JavaScript program to reverse a string using recursion
 
function reverse(string, index, n) {
if (index === n) { // return if we reached at last index or at the end of the string
return;
}
var temp = string[index]; // storing each character starting from index 0 in function call stack;
reverse(string, index+1, n); // calling recursive function by increasing index everytime
console.log(temp); // printing each stored character while recurring back
}
 
// Driver code
var string = "Geeks for Geeks";
var n = string.length;
reverse(string, 0, n);
 
// This code is contributed by pradeepkumarppk2003


Output:

skeeG rof skeeG

Time Complexity: O(n) where n is size of the string

Auxiliary Space: O(n) where n is the size of string, which will be used in the form of function call stack of recursion.

C++




#include <iostream>
using namespace std;
 
// Function to reverse a string using recursion
string reverse(string str, int len) {
    if (len < 1) {
        return "";
    }
 
    // Base case
    if (len == 1) {
        return string(1, str[0]);
    }
 
    return str[len - 1] + reverse(str, len - 1);
}
 
int main() {
    string str = "Geeks for neveropen";
    cout << reverse(str, str.length()) << endl;
    return 0;
}
 
// This code is contributed by akshitaguprzj3


Javascript




// Javascript program to reverse string using recursion
 
function reverse(str , len){
if(len < 1){
return
}
// base case
if(len === 1){
return str[0]
}
 
return str[len-1] + reverse(str , len -1 )
 
}
  
 // Driver code
  
 let str = "Geeks for neveropen"
 console.log(reverse(str, str.length))
  
 // This code is contributed by rithikpathak123


Output

skeeg rof skeeG

Time Complexity: O(n) where n is size of the string

Auxiliary Space: O(n) where n is the size of string, which will be used in the form of function call stack of recursion.

Explanation: This problem can be expressed in terms of smaller instance of same subproblem.

str= “Geeks for neveropen”

reverse string of str = last character of str + reverse string of remaining str = “s” + reverse string of “Geeks for geek” = “skeeg rof skeeG”

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
 

Please suggest if someone has a better solution which is more efficient in terms of space and time.
This article is contributed by Anurag Mishra and Aarti_Rathi . Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
 

Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

RELATED ARTICLES

Most Popular

Recent Comments