# C Program to reverse the digits of a number using recursion

• Last Updated : 29 Nov, 2022

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.

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

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

 `// C program for the above approach` `#include ``#include ``#include ` `// 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;``}`

Output:

`321`

Time Complexity: O(log10N)
Auxiliary Space: O(log10N) for call stack

My Personal Notes arrow_drop_up