Program to reverse a number in C, C++, Java and Python | FACE Prep

Program to reverse a number in C, C++, Java and Python | FACE Prep

Program to reverse a number in C, C++, Java and Python | FACE Prep

Reversing a number is a common problem in programming that helps in understanding loops, recursion, and arithmetic operations. This article explores two approaches to reversing a number:

  1. Iterative Approach – Using a loop
  2. Recursive Approach – Using function recursion

Understanding the Problem

Example:

Input:

CopyEdit13579

Output:

CopyEdit97531

The digits of the number are reversed, changing their order.

1. Reverse a Number in C

Iterative Approach (Using Loop)

cCopyEdit#include <stdio.h>

void reverseNumber(int num) {
    int rev = 0, rem;
    
    while (num > 0) {
        rem = num % 10;
        rev = rev * 10 + rem;
        num /= 10;
    }
    
    printf("Reversed Number: %d\n", rev);
}

int main() {
    int num;
    printf("Enter a number: ");
    scanf("%d", &num);
    
    reverseNumber(num);
    
    return 0;
}

Recursive Approach

cCopyEdit#include <stdio.h>

int reverseHelper(int num, int rev) {
    if (num == 0) 
        return rev;
    
    return reverseHelper(num / 10, rev * 10 + (num % 10));
}

int reverseNumber(int num) {
    return reverseHelper(num, 0);
}

int main() {
    int num;
    printf("Enter a number: ");
    scanf("%d", &num);
    
    printf("Reversed Number: %d\n", reverseNumber(num));
    
    return 0;
}

2. Reverse a Number in C++

Iterative Approach (Using Loop)

cppCopyEdit#include <iostream>
using namespace std;

void reverseNumber(int num) {
    int rev = 0, rem;
    
    while (num > 0) {
        rem = num % 10;
        rev = rev * 10 + rem;
        num /= 10;
    }
    
    cout << "Reversed Number: " << rev << endl;
}

int main() {
    int num;
    cout << "Enter a number: ";
    cin >> num;
    
    reverseNumber(num);
    
    return 0;
}

Recursive Approach

cppCopyEdit#include <iostream>
using namespace std;

int reverseHelper(int num, int rev) {
    if (num == 0) 
        return rev;
    
    return reverseHelper(num / 10, rev * 10 + (num % 10));
}

int reverseNumber(int num) {
    return reverseHelper(num, 0);
}

int main() {
    int num;
    cout << "Enter a number: ";
    cin >> num;
    
    cout << "Reversed Number: " << reverseNumber(num) << endl;
    
    return 0;
}

3. Reverse a Number in Java

Iterative Approach (Using Loop)

javaCopyEditimport java.util.Scanner;

public class ReverseNumber {
    public static void reverseNumber(int num) {
        int rev = 0, rem;
        
        while (num > 0) {
            rem = num % 10;
            rev = rev * 10 + rem;
            num /= 10;
        }
        
        System.out.println("Reversed Number: " + rev);
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Enter a number: ");
        int num = scanner.nextInt();
        reverseNumber(num);
        scanner.close();
    }
}

Recursive Approach

javaCopyEditimport java.util.Scanner;

public class ReverseNumber {
    public static int reverseHelper(int num, int rev) {
        if (num == 0) 
            return rev;
        
        return reverseHelper(num / 10, rev * 10 + (num % 10));
    }

    public static int reverseNumber(int num) {
        return reverseHelper(num, 0);
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Enter a number: ");
        int num = scanner.nextInt();
        System.out.println("Reversed Number: " + reverseNumber(num));
        scanner.close();
    }
}

4. Reverse a Number in Python

Iterative Approach (Using Loop)

pythonCopyEditdef reverse_number(num):
    rev = 0
    while num > 0:
        rev = rev * 10 + num % 10
        num //= 10
    return rev

num = int(input("Enter a number: "))
print("Reversed Number:", reverse_number(num))

Recursive Approach

pythonCopyEditdef reverse_helper(num, rev=0):
    if num == 0:
        return rev
    return reverse_helper(num // 10, rev * 10 + num % 10)

num = int(input("Enter a number: "))
print("Reversed Number:", reverse_helper(num))

Methods to Reverse a Number

Method 1: Iterative Approach

The iterative approach uses a loop to extract digits one by one and construct the reversed number.

Algorithm:

  1. Input the number from the user.
  2. Initialize rev = 0.
  3. Extract the last digit using rem = number % 10.
  4. Add it to rev using rev = rev * 10 + rem.
  5. Remove the last digit using number = number / 10.
  6. Repeat steps 3-5 until number becomes 0.
  7. Print the reversed number.

Code (Iterative Approach):

cCopyEdit#include <stdio.h>

void reverseNumber(int num) {
    int rev = 0, rem;
    
    while (num > 0) {
        rem = num % 10;
        rev = rev * 10 + rem;
        num /= 10;
    }
    
    printf("Reversed Number: %d\n", rev);
}

int main() {
    int num;
    printf("Enter a number: ");
    scanf("%d", &num);
    
    reverseNumber(num);
    
    return 0;
}

Time Complexity: O(log n)

Space Complexity: O(1)

Why O(log n)? The number has log₁₀(n) digits, so the loop runs approximately log(n) times.


Method 2: Recursive Approach

Recursion allows breaking down the problem into smaller subproblems, solving it using function calls.

Algorithm:

  1. Base case: If num == 0, return 0.
  2. Extract the last digit using num % 10.
  3. Use recursion to process the remaining digits.
  4. Multiply the result by 10 at each step to reconstruct the reversed number.

Code (Recursive Approach):

cCopyEdit#include <stdio.h>

int reverseHelper(int num, int rev) {
    if (num == 0) 
        return rev;
    
    int rem = num % 10;
    return reverseHelper(num / 10, rev * 10 + rem);
}

int reverseNumber(int num) {
    return reverseHelper(num, 0);
}

int main() {
    int num;
    printf("Enter a number: ");
    scanf("%d", &num);
    
    int reversed = reverseNumber(num);
    printf("Reversed Number: %d\n", reversed);
    
    return 0;
}

Time Complexity: O(log n)

Space Complexity: O(log n) (because of recursive calls)


Comparison of Both Methods

ApproachTime ComplexitySpace ComplexitySuitability
IterativeO(log n)O(1)Simple and memory-efficient
RecursiveO(log n)O(log n)Useful for recursion-based problems

Key Takeaways:

  • Use iteration for efficiency and simplicity.
  • Use recursion if working with recursion-based problems.

Similar Number-Based Problems to Solve

  • Count the number of digits in an integer
  • Find the sum of digits of a number
  • Calculate the sum of N natural numbers
  • Find the sum of numbers in a given range
  • Compute the factorial of a number
  • Generate the Fibonacci series up to N

Would you like solutions for these problems? Let me know.


Conclusion

Reversing a number is a fundamental problem in programming. We explored two approaches:

  1. Iterative Approach – Efficient and easy to implement.
  2. Recursive Approach – Uses function calls and stack memory.

For competitive programming or technical interviews, the iterative approach is recommended due to its O(1) space complexity.

Program to reverse a number
c