Using Recursion and Normal Methods (Python, Java, JavaScript)
In programming, we can solve problems in multiple ways. The two common approaches are:
- Normal Method (Loops) – using
for/while - Recursion – function calling itself
In this blog, we will solve 3 important problems using both approaches:
- Sum of digits
- Reverse a number
- Print digits of a number
1. Sum of Digits
Example
Input: 1234
Output: 10
Normal Method (Loop)
Python
def sum_digits(n):
total = 0
while n > 0:
total += n % 10
n = n // 10
return total
print(sum_digits(1234))
Java
class Main {
public static void main(String[] args){
int n = 1234, sum = 0;
while(n > 0){
sum += n % 10;
n = n / 10;
}
System.out.println(sum);
}
}
JavaScript
function sumDigits(n){
let sum = 0;
while(n > 0){
sum += n % 10;
n = Math.floor(n / 10);
}
return sum;
}
console.log(sumDigits(1234));
Recursion Method
Python
def sum_digits(n):
if n == 0:
return 0
return n % 10 + sum_digits(n // 10)
print(sum_digits(1234))
Java
class Main {
static int sumDigits(int n){
if(n == 0) return 0;
return n % 10 + sumDigits(n / 10);
}
public static void main(String[] args){
System.out.println(sumDigits(1234));
}
}
JavaScript
function sumDigits(n){
if(n === 0) return 0;
return n % 10 + sumDigits(Math.floor(n / 10));
}
console.log(sumDigits(1234));
🔁 2. Reverse a Number
👉 Example
Input: 1234
Output: 4321
🔁 Normal Method (Loop)
Python
def reverse(n):
rev = 0
while n > 0:
rev = rev * 10 + n % 10
n = n // 10
return rev
print(reverse(1234))
Java
class Main {
public static void main(String[] args){
int n = 1234, rev = 0;
while(n > 0){
rev = rev * 10 + n % 10;
n = n / 10;
}
System.out.println(rev);
}
}
JavaScript
function reverse(n){
let rev = 0;
while(n > 0){
rev = rev * 10 + n % 10;
n = Math.floor(n / 10);
}
return rev;
}
console.log(reverse(1234));
🔄 Recursion Method
Python
def reverse(n, rev=0):
if n == 0:
return rev
return reverse(n // 10, rev * 10 + n % 10)
print(reverse(1234))
Java
class Main {
static int reverse(int n, int rev){
if(n == 0) return rev;
return reverse(n / 10, rev * 10 + n % 10);
}
public static void main(String[] args){
System.out.println(reverse(1234, 0));
}
}
JavaScript
function reverse(n, rev = 0){
if(n === 0) return rev;
return reverse(Math.floor(n / 10), rev * 10 + n % 10);
}
console.log(reverse(1234));
🔢 3. Print Digits of a Number
👉 Example
Input: 1234
Output:
1
2
3
4
🔁 Normal Method (Loop)
Python
def print_digits(n):
digits = []
while n > 0:
digits.append(n % 10)
n = n // 10
for d in reversed(digits):
print(d)
print_digits(1234)
Java
class Main {
public static void main(String[] args){
int n = 1234;
int[] arr = new int[10];
int i = 0;
while(n > 0){
arr[i++] = n % 10;
n = n / 10;
}
for(int j = i - 1; j >= 0; j--){
System.out.println(arr[j]);
}
}
}
JavaScript
function printDigits(n){
let arr = [];
while(n > 0){
arr.push(n % 10);
n = Math.floor(n / 10);
}
arr.reverse().forEach(d => console.log(d));
}
printDigits(1234);
🔄 Recursion Method
Python
def print_digits(n):
if n == 0:
return
print_digits(n // 10)
print(n % 10)
print_digits(1234)
Java
class Main {
static void printDigits(int n){
if(n == 0) return;
printDigits(n / 10);
System.out.println(n % 10);
}
public static void main(String[] args){
printDigits(1234);
}
}
JavaScript
function printDigits(n){
if(n === 0) return;
printDigits(Math.floor(n / 10));
console.log(n % 10);
}
printDigits(1234);
🎯 Conclusion
Both approaches are important:
🔁 Loop Method
- Easy to understand
- Faster execution
- Uses less memory
Top comments (0)