# 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 = 123Output:321Explanation:

The reverse of the given number is 321.

Input:N = 12532Output:23521Explanation:

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

`// 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;` `}` |

**Output:**

321

**Time Complexity:** O(log_{10}N)**Auxiliary Space:** O(1)