# 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: