Write a recursive function in C programming to find reverse of any number. How to find reverse of any number in C programming using recursion. Finding reverse of any number using recursion in C programming. Logic to find reverse of a number using recursion in C programming

**Example**

**Input**

Input number: 12345

**Output**

Reverse: 54321

## Required knowledge

Basic C programming, Function, Recursion

Must know - Program to find reverse of a number using loop

## Declare recursive function to find reverse of a number

- First let us assign some meaningful name to our function, say reverse().
- The function computes reverse of any number, hence must accept a integer parameter from user. The revised function declaration is reverse(int num).
- Finally, the function computes and returns an integer which is reverse of the number.

After looking on above points function declaration to find reverse of a number is - int reverse(int num);.

## Logic to find reverse of number using recursion

Reversing an integer involves four basis steps.

- Multiply the reverse variable by 10.
- Find the last digit of the given number.
- Add the last digit just found to reverse.
- Divide the original number by 10 to eliminate the last digit, which is not needed anymore.

Repeat the above four steps till the number becomes 0 and we are left with the reversed number in reverse variable.

Here also we will use the above four steps to find the reverse using recursive approach with the given base condition:

reverse(0) = 0 **{Base condition}**

reverse(n) = (n%10 * pow(10, digits)) + reverse(n/10) {where **digit** is the total number of digits in number}

## Program to find reverse of a number using recursion

```
/**
* C program to find reverse of any number using recursion
*/
#include <stdio.h>
#include <math.h>
/* Fuction declaration */
int reverse(int num);
int main()
{
int num, rev;
/* Input number from user */
printf("Enter any number: ");
scanf("%d", &num);
/* Call the function to reverse number */
rev = reverse(num);
printf("Reverse of %d = %d", num, rev);
return 0;
}
/**
* Recursive function to find reverse of any number
*/
int reverse(int num)
{
// Find total number of digits in num
int digit = (int) log10(num);
// Base condition
if(num == 0)
return 0;
return ((num%10 * pow(10, digit)) + reverse(num/10));
}
```

The above program works fine. However, as mentioned by one of our reader it doesn't works for negative values. This is because we are using `log10()`

function and logarithm is only defined for positive values. Hence, to make it work for negative values we have to make little modification in our logic.

## Program to find reverse of a negative number using recursion

To find reverse of negative number use the logic for positive number reverse which I mentioned above. In addition check if the number is negative then convert it to positive and then pass it to `reverse()`

function. One more condition you need to check, if number was negative then convert the reversed number to negative.

That's all, let us implement this.

```
/**
* C program to find reverse of any number using recursion
*/
#include <stdio.h>
#include <math.h>
/* Fuction declaration */
int reverse(int num);
int main()
{
int num, rev, numIsNegative;
/* Input number from user */
printf("Enter any number: ");
scanf("%d", &num);
/* Assign 1 if(num < 0) otherwise 0 */
numIsNegative = (num < 0);
/* If num is negative, then convert it to positive */
if(numIsNegative)
num *= -1;
/* Call the function to reverse number */
rev = reverse(num);
/* If num was negative, then convert the reverse to negative */
if(numIsNegative)
rev *= -1;
printf("Reverse of %d = %d", num, rev);
return 0;
}
/**
* Recursive function to find reverse of any number
*/
int reverse(int num)
{
// Find total number of digits in num
int digit = (int) log10(num);
// Base condition
if(num == 0)
return 0;
return ((num%10 * pow(10, digit)) + reverse(num/10));
}
```

Output

Enter any number: 12345 Reverse of 12345 = 54321

Happy coding 😉

### Recommended posts

- Function and recursion programming exercise index.
- C program to find HCF of two numbers using recursion.
- C program to find LCM of two numbers using recursion.
- C program to generate nth Fibonacci series using recursion.
- C program to find factorial of a number using recursion.
- C program to display array elements using recursion.

<pre><code> ----Your Source Code---- </code></pre>