DEV Community

PONVEL M
PONVEL M

Posted on

Sum of Digits, Reverse Number & Digit Printing

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:

  1. Sum of digits
  2. Reverse a number
  3. 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))
Enter fullscreen mode Exit fullscreen mode

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);
    }
}
Enter fullscreen mode Exit fullscreen mode

JavaScript

function sumDigits(n){
    let sum = 0;
    while(n > 0){
        sum += n % 10;
        n = Math.floor(n / 10);
    }
    return sum;
}

console.log(sumDigits(1234));
Enter fullscreen mode Exit fullscreen mode

Recursion Method

Python

def sum_digits(n):
    if n == 0:
        return 0
    return n % 10 + sum_digits(n // 10)

print(sum_digits(1234))
Enter fullscreen mode Exit fullscreen mode

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));
    }
}
Enter fullscreen mode Exit fullscreen mode

JavaScript

function sumDigits(n){
    if(n === 0) return 0;
    return n % 10 + sumDigits(Math.floor(n / 10));
}

console.log(sumDigits(1234));
Enter fullscreen mode Exit fullscreen mode

🔁 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))
Enter fullscreen mode Exit fullscreen mode

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);
    }
}
Enter fullscreen mode Exit fullscreen mode

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));
Enter fullscreen mode Exit fullscreen mode

🔄 Recursion Method

Python

def reverse(n, rev=0):
    if n == 0:
        return rev
    return reverse(n // 10, rev * 10 + n % 10)

print(reverse(1234))
Enter fullscreen mode Exit fullscreen mode

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));
    }
}
Enter fullscreen mode Exit fullscreen mode

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));
Enter fullscreen mode Exit fullscreen mode

🔢 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)
Enter fullscreen mode Exit fullscreen mode

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]);
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

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);
Enter fullscreen mode Exit fullscreen mode

🔄 Recursion Method

Python

def print_digits(n):
    if n == 0:
        return
    print_digits(n // 10)
    print(n % 10)

print_digits(1234)
Enter fullscreen mode Exit fullscreen mode

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);
    }
}
Enter fullscreen mode Exit fullscreen mode

JavaScript

function printDigits(n){
    if(n === 0) return;
    printDigits(Math.floor(n / 10));
    console.log(n % 10);
}

printDigits(1234);
Enter fullscreen mode Exit fullscreen mode

🎯 Conclusion

Both approaches are important:

🔁 Loop Method

  • Easy to understand
  • Faster execution
  • Uses less memory

🔄 Recursio

Top comments (0)