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
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
int reverse( int N)
{
return ((N <= 9))
? N
: reverse(N / 10)
+ ((N % 10)
* ( pow (10,
( floor ( log10 (
abs (N)))))));
}
void reverseUtil( int N)
{
int result = reverse(N);
printf ( "%d" , result);
}
int main()
{
int N = 123;
reverseUtil(N);
return 0;
}
|
Time Complexity: O(log10N)
Auxiliary Space: O(log10N) for call stack
Last Updated :
29 Nov, 2022
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...