Java Program to Find Digital Roots of a Number by Using Recursion

Prerequisite: Recursion in Java

In the previous article, we have discussed about Java Program to Find First Uppercase Letter in a String by Using Recursion

In this program we are going to see how to find digital roots of a number by using Recursion in Java programming language.

Java Program to Find Digital Roots of a Number by Using Recursion

Let’s see an example to understand it clearly.

Assume there is a number say N = 1234
Then the sum of the digits of N = 1+2+3+4 = 10
If the sum of digits > 9 then again find the sum of digits.
Hence sum of digits of 10 is 1+0 = 1
So, the digital root of 1234 is 1

Now let’s see different ways to find digital roots of a number by using recursion.

Method-1: Java Program to Find Digital Roots of a Number By Using Static Input and Recursion

Approach:

  • Declare and initialize an integer variable say ‘n
  • Call a user defined method findDigitalRoot() method and pass ‘n’ as parameter to find the digital root of the given number .
  • Inside the user defined method we will find the sum of the digits of the number using a do while loop, if the sum of digits of the number exceeds 9 then we will call findDigitalRoot() method recursively. And finally we will return the sum value to the main() method.
  • Now the value of the user defined method findDigitalRoot() method is stored in an integer variable say ‘x’.
  • Print the value of digital root.

Program:

import java.util.*;
import java.io.*;
public class Main 
{
    public static void main(String[] args)
    {
        // declare and initialize an integer variable ‘n’
        int n = 7869;
        //call findDigitalRoot() method to find the digital root
        int x = findDigitalRoot(n);
        // print the result
        System.out.println("The digital root of the number "+n+" is: "+x);
    }
    
    //findDigitalRoot method
    static int findDigitalRoot(long n)
    {
        //storing the original integer value in a temporary variable
        long temp = n;
        long sum = 0;
        //to find sum of digits of a number
        do 
        {
            long remainder = temp%10;
            sum += remainder;
            temp = temp/10;
        } 
        while(temp!=0);
        //if the sum of digits of the number is greater than 9 then again find the sum of the digits using recursion
        if (sum > 9)
            return findDigitalRoot(sum);
        // if the sum of digits of the number is less than 10 then return the value
        return (int)sum;
    }
}
Output:

The digital root of the number 7869 is: 3

Method-2: Java Program to Find Digital Roots of a Number By Using User Input and Recursion

Approach:

  • Create a scanner class.
  • Declare an integer variable say ‘n’.
  • Prompt the user to enter a number.
  • Call a user defined method findDigitalRoot() method and pass ‘n’ as parameter to find the digital root of the given number .
  • Inside the user defined method we will find the sum of the digits of the number using a do while loop, if the sum of digits of the number exceeds 9 then we will call findDigitalRoot() method recursively. And finally we will return the sum value to the main() method.
  • Now the value of the user defined method findDigitalRoot() method is stored in an integer variable say ‘x’.
  • Print the value of digital root.

Program:

import java.util.*;
import java.io.*;
public class Main 
{
    public static void main(String[] args)
    {
        // create a scanner class
        Scanner s = new Scanner(System.in);
        System.out.println("Enter the number:");
        int n = s.nextInt();
        //call findDigitalRoot() method to find the digital root
        int x = findDigitalRoot(n);
        // print the result
        System.out.println("The digital root of the number "+n+" is: "+x);
    }
    
    //findDigitalRoot method
    static int findDigitalRoot(long n)
    {
        //storing the original integer value in a temporary variable
        long temp = n;
        long sum = 0;
        //to find sum of digits of a number
        do 
        {
            long remainder = temp%10;
            sum += remainder;
            temp = temp/10;
        } 
        while(temp!=0);
        //if the sum of digits of the number is greater than 9 then again find the sum of the digits using recursion
        if (sum > 9)
            return findDigitalRoot(sum);
        // if the sum of digits of the number is less than 10 then return the value
        return (int)sum;
    }
}
Output:

Enter the number:
1234
The digital root of the number 1234 is: 1

Guys who are serious about learning the concepts of the java programming language should practice this list of programs in java and get a good grip on it for better results in exams or interviews.

Related Java Programs: