Print reverse of a string using recursion - GeeksforGeeks

19 Jul, 2021
Write a recursive function to print reverse of a given string. Program:  
C++
C
Java
Python
C#
PHP
Javascript
// 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 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 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 program to reverse a string using recursion # Function to print reverse of the passed stringdef reverse(string):    if len(string) == 0:        return         temp = string[0]    reverse(string[1:])    print(temp, end='') # Driver program to test above functionstring = "Geeks for Geeks"reverse(string) # A single line statement to reverse string in python# string[::-1] # This code is contributed by Bhavya Jain
// C# program to reverse// a string using recursionusing 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
<?php// PHP program to reverse// a string using recursion // Function to print reverse// of the passed stringfunction 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)?>
<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>
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^2) as substr() method has a time complexity of O(k) where k is the size of the returned string. So for every recursive call, we are reducing the size of the string by one, which leads to a series like (k-1)+(k-2)+...+1 = k*(k-1)/2 = O(k^2) = O(n^2)See Reverse a string for other methods to reverse string.Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above. 
manishshaw1
rajatdiptabiswas
rathbhupendra
sarthakb
lokeshpotta20
Strings
Strings
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Convert string to char array in C++
Caesar Cipher in Cryptography
Array of Strings in C++ (5 Different Ways to Create)
Reverse words in a given string
Top 50 String Coding Problems for Interviews
Length of the longest substring without repeating characters
Check whether two strings are anagram of each other
Reverse string in Python (5 different ways)
Hill Cipher
stringstream in C++ and its applications