Tuesday, May 2, 2017

Java Program to Find Sum of Digits in a Number using Recursion - Interview Question

Recently this question to ask was one of my readers, which inspired me to write this tutorial. There was a usual check to solve this problem using both recursion and iteration. To be frank, the calculating the sum of digit of an integral number is not difficult, but I have still seen quite a few programmers fumbles, even after providing hint in terms of division and modules operator. The key point here is to know how to use division and modulus operators in Java. For this kind of exercise including reversing a number, where you need to find digits from a number, use division operator to remove right, and use modules operator or % to get rightmost digits.

For example, if you have number 1234 then 1234/10 will give you 123 i.e. right most digit 4 is removed, while 1234%10 will give you 4, which is the rightmost digit in that number. If you know this property, you can easily solve lots of problems that are related to reversing numbers e.g. checking if a number is palindrome or finding Armstrong numbers in Java.

Also, basic knowledge of essential data structure and algorithms is also very important and that's why I suggest all Java programmers join a comprehensive Data Structure and Algorithms course like Data Structures and Algorithms: Deep Dive Using Java on Udemy to improve your knowledge and algorithms skills. 



Java program to calculate the sum of digits in a number

How to find sum of digit of a number coding question in JavaHere is a complete Java code example to find the sum of digits using recursion in Java. This Java example also includes an iterative solution to this problem to prepare follow-up questions from the Interviewer. 



By the way, you can also use this example to learn Recursion in Java. It’s a tricky concept, and examples like this certainly help to understand and apply recursion better.

/**
 * Java program to calculate sum of digits for a number using recursion and iteration.
 * Iterative solution uses while loop here.
 *
 * @author Javin Paul
 */
public class SumOfDigit {
 
    public static void main(String args[]) {
      
      System.out.println( "Sum of digit using recursion for number 123 is " 
                           + sumOfDigits(123));
      System.out.println( "Sum of digit using recursion for number 1234 is " 
                           + sumOfDigits(1234));
      System.out.println( "Sum of digit from recursive function for number 321 is " 
                           + sumOfDigits(321));
      System.out.println( "Sum of digit from recursive method for number 1 is " 
                           + sumOfDigits(1));
     
      System.out.println( "Sum of digit using Iteration for number 123 is " 
                           + sumOfDigitsIterative(123));
      System.out.println( "Sum of digit using while loop for number 1234 is "
                           + sumOfDigitsIterative(1234));
     
    } 
   
   
  
    public static int sumOfDigits(int number){
        if(number/10 == 0) return number;
       
        return number%10 + sumOfDigits(number/10);
    }
   
    public static int sumOfDigitsIterative(int number){
        int result  = 0;
        while(number != 0){
            result = result + number%10;
            number = number/10;
        }
       
        return result;
    }
  
}

Output:
Sum of digit using recursion for number 123 is 6
Sum of digit using recursion for number 1234 is 10
Sum of digit from recursive function for number 321 is 6
Sum of digit from recursive method for number 1 is 1
Sum of digit using Iteration for number 123 is 6
Sum of digit using while loop for number 1234 is 10

That's all on How to find the sum of digits of a number using recursion in Java. You should be able to write this method using both Iteration i.e. using loops, and using Recursion i.e. without using loops in Java.

Further Learning
The Coding Interview Bootcamp: Algorithms + Data Structures
Data Structures and Algorithms: Deep Dive Using Java
Algorithms and Data Structures - Part 1 and 2

2 comments :

Anonymous said...

I may do it in this way, it's easier for me to understand,
public static int sumOfDigits(int digit)
{
int re = 0;
while(digit != 0)
{
re += digit%10;
digit /= 10;
}
return re;
}

Unknown said...

Sum of digits os the addition of the digits present in the program.you can get the code from http://letusprogram.wordpress.com/2013/07/12/sum-of-digits-in-java/

Post a Comment