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