C++ Program To Print Reverse of a String Using Recursion
Last Updated :
17 Jan, 2023
Write a recursive function to print the reverse of a given string.Â
Code:Â
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.
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++
#include <bits/stdc++.h>
using namespace std;
void reverse( char *str, int index, int n)
{
if (index == n)
{
return ;
}
char temp = str[index];
reverse(str, index+1, n);
cout << temp;
}
int main()
{
char a[] = "Geeks for Geeks" ;
int n = sizeof (a) / sizeof (a[0]);
reverse(a, 0, n);
return 0;
}
|
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.
Â
Please suggest if someone has a better solution that is more efficient in terms of space and time.
Share your thoughts in the comments
Please Login to comment...