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:
CopyEdit13579
CopyEdit97531
The digits of the number are reversed, changing their order.
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;
}
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;
}
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;
}
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;
}
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();
}
}
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();
}
}
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))
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))
The iterative approach uses a loop to extract digits one by one and construct the reversed number.
rev = 0
.rem = number % 10
.rev
using rev = rev * 10 + rem
.number = number / 10
.number
becomes 0.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;
}
Why O(log n)? The number has log₁₀(n) digits, so the loop runs approximately log(n) times.
Recursion allows breaking down the problem into smaller subproblems, solving it using function calls.
num == 0
, return 0.num % 10
.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;
}
Approach | Time Complexity | Space Complexity | Suitability |
---|---|---|---|
Iterative | O(log n) | O(1) | Simple and memory-efficient |
Recursive | O(log n) | O(log n) | Useful for recursion-based problems |
Would you like solutions for these problems? Let me know.
Reversing a number is a fundamental problem in programming. We explored two approaches:
For competitive programming or technical interviews, the iterative approach is recommended due to its O(1) space complexity.