C Program to reverse the digits of a number using recursion

Given an integer N, the task is to reverse the digits of given integer using recursion.

Examples:

Input: N = 123
Output: 321
Explanation:
The reverse of the given number is 321.

Input: N = 12532
Output: 23521
Explanation:
The reverse of the given number is 23521.

Approach: Follow the steps below to solve the problem:



  • Recursively iterate every digit of N.
  • If the current value of N passed is less than 10, return N.

if(num < 10)
     return N;

  • Otherwise, after each recursive call (except the base case), return the recursive function for next iteration:

    return reverse(N/10) + ((N%10)*(pow(10, (floor(log10(abs(N)))))))

where, floor(log10(abs(x))) gives the count of digits of x
((x%10)*(pow(10, (floor(log10(abs(x))))))) places the extracted unit place digits (x%10) to their desired positions

Below is the implementation of the above approach:

C

filter_none

edit
close

play_arrow

link
brightness_4
code

// C program for the above approach
  
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
  
// Function to reverse the digits of
// the given integer
int reverse(int N)
{
    return ((N <= 9))
               ? N
               : reverse(N / 10)
                     + ((N % 10)
                        * (pow(10,
                               (floor(log10(
                                   abs(N)))))));
}
  
// Utility function to reverse the
// digits of the given integer
void reverseUtil(int N)
{
    // Stores reversed integer
    int result = reverse(N);
  
    // Print reversed integer
    printf("%d", result);
}
  
// Driver Code
int main()
{
    // Given integer N
    int N = 123;
  
    // Function Call
    reverseUtil(N);
  
    return 0;
}

chevron_right


Output:

321

Time Complexity: O(log10N)
Auxiliary Space: O(1)

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.