Open In App

C Program to Reverse a String Using Recursion

Reversing a string means changing the order of characters in the string so that the last character becomes the first character of the string. 

 

Example:



Input: Geeks 
Output: skeeG
Input: Hello 
Output: olleH

Simple Approach

Below is the C program to reverse a string using recursion:




// 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 code
int main()
{
  char a[] = "Geeks for Geeks";
  reverse(a);
  return 0;
}

Output

skeeG rof skeeG

Explanation of the above method

The complexity of the method above

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 a string.

Auxiliary Space: O(n)

Efficient Approach

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




// 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)
{
    // return if we reached at last index or
    // at the end of the string
    if(index == n)
        return;
   
    // storing each character starting from index 0
    // in function call stack;
    char temp = str[index];
   
    // calling recursive function by increasing
    // index everytime
    reverse(str, index + 1, n);
   
    // printing each stored character while
    // recurring back
    printf("%c", temp);            
}
 
// Driver code
int main()
{
    char a[] = "Geeks for Geeks";
    int n = sizeof(a) / sizeof(a[0]);
    reverse(a, 0, n);
   
    return 0;
}

Output

skeeG roF skeeG

The Complexity of the method above

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

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


Article Tags :