Table of Contents
The program uses recursion to reverse an input number. A function is recursively called to extract each digit from the number and place it in reverse order. The final output is a reversed number.
Problem Definition
The program receives an input number and reverse each by extracting the digits one at a time from original number n. It starts with two initial conditions. The remainder r = 0 and if n=0 then return 0.
The procedure to reverse the number 567 is shown below. The program does the following tasks to reverse the input number.
- Extract a digit from the unit position.
- Each iteration multiply the number with 10 to reverse it.
- Next extracted digit is added to previously obtained result.
- After final extraction the number is completely reversed.
Go through each step below to understand the working of the reverse() function.
Step 1: Extract the number 7
\begin{aligned}&r = r + n \hspace{2mm}\% \hspace{2mm}10\\ \\
&r = 0 + 567 \hspace{2mm}\% \hspace{2mm}10\\ \\
&t = 7
\end{aligned}Step 2: Change the position of a number from unit place to tenth place.
\begin{aligned}
&r = r * 10\\ \\
& r = 7 * 10\\ \\
&r = 70
\end{aligned}Step 3: Get ready for the next extraction.
\begin{aligned}
&= reverse (n/10)\\ \\
&= reverse (567/10)\\ \\
&= reverse (56)
\end{aligned}Step 4: Extraction the second digit when value of r = 70 from Step 2.
\begin{aligned}
&r = 70 + n \% 10\\ \\
&r = 70 + 56 \% 10\\ \\
&r = 70 + 6\\ \\
&r = 76
\end{aligned}Step 5: Change position of r to tenth place to hundredth place.
\begin{aligned} &r = r * 10\\ \\
&r = 76 * 10\\ \\
&r = 760
\end{aligned}Step 6: Get ready for a new n value.
\begin{aligned}
&= reverse (n/10)\\ \\
& = reverse ( 56/1)\\ \\
& = reverse (5)
\end{aligned}Step 7: Extract last digit from original number, when r = 760
\begin{aligned}
&r = r + n \% 10\\ \\
& r = 760 + 5\\ \\
&r = 765
\end{aligned}The number is successfully reversed.
Note:- The above steps are demonstration of reversing a 3 digit number, hence, the number of steps are limited. If you take a larger number there will be more steps.
Flowchart – reverse a number using recursion

Program Codes – reverse a number using recursion
#include
#include
int reverse(int);
int main()
{
int n, r, i;
printf("Enter a Number to Reverse:");
scanf("%d", & n);
r = reverse(n);
for (i = 0; i < 30; i++)
printf("_"); printf("\n\n");
printf("%d\n\n", r);
for (i = 0; i < 30; i++)
printf("_"); printf("\n\n");
system("PAUSE");
return (0);
}
/* The Reverse Function */
int reverse(int n)
{
static long r = 0;
if (n == 0)
{
return 0;
}
r = r * 10;
r = r + n % 10;
reverse(n / 10);
return r;
}#include <iostream>
using namespace std;
long reverse(int n)
{
static long r = 0; // static variable to retain value
if (n == 0)
return 0;
r = r * 10 + (n % 10);
reverse(n / 10);
return r;
}
int main()
{
int n;
long r;
cout << "Enter a Number to Reverse: ";
cin >> n;
r = reverse(n);
for (int i = 0; i < 30; i++)
cout << "_";
cout << "\n\n";
cout << r << "\n\n";
for (int i = 0; i < 30; i++)
cout << "_";
cout << "\n";
return 0;
}
import java.util.Scanner;
class ReverseNumber {
static long r = 0; // static variable
static long reverse(int n) {
if (n == 0) {
return 0;
}
r = r * 10 + (n % 10);
reverse(n / 10);
return r;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Enter a Number to Reverse: ");
int n = sc.nextInt();
long result = reverse(n);
for (int i = 0; i < 30; i++)
System.out.print("_");
System.out.println("\n");
System.out.println(result + "\n");
for (int i = 0; i < 30; i++)
System.out.print("_");
System.out.println();
sc.close();
}
}
def reverse(n, r=0):
if n == 0:
return r
return reverse(n // 10, r * 10 + n % 10)
n = int(input("Enter a Number to Reverse: "))
result = reverse(n)
print("_" * 30)
print("\n", result, "\n")
print("_" * 30)
Output
The program ask for an input number, when you enter a number – for example, 244. The program reverses the digits of the number and prints on the console. The solution is 442.
Enter a Number to Reverse: 244
_______________________________
442
_______________________________