Skip to main content

Digital root of a large number using recursion

Here given code implementation process.

/*
    Java Program
    Digital root of a large number using recursion
*/
public class DigitSum
{
	// Find the digital root using recursion process
	public String findDigitalRoot(String num)
	{
		if (num.length() == 1)
		{
			// Returning the result of single digit
			return num;
		}
		int sum = 0;
		// Sum of all digit
		for (int i = 0; i < num.length(); ++i)
		{
			sum += num.charAt(i) - '0';
		}
		return findDigitalRoot("" + sum);
	}
	// Handles the request to find digital root of given string number
	public void digitalRoot(String num)
	{
		// Display given number
		System.out.println(" Given number : " + num);
		// Display calculated result 
		System.out.println(" Digital root : " + findDigitalRoot(num));
	}
	public static void main(String[] args)
	{
		DigitSum task = new DigitSum();
		/*
		Case A :
		Given number : 123456
		    1 + 2 + 3 + 4 + 5 + 6 = 21
		    2 + 1 = 3

		    Result =  3
		*/
		task.digitalRoot("123456");
		/*
		Case B :
		Given number : 123908756245134574732783343268
		    1 + 2 + 3 + 9 + 0 + 8 + 7 + 5 + 6 
		    + 2 + 4 + 5 + 1 + 3 + 4 
		    + 5 + 7 + 4 + 7 + 3 + 2 + 7 
		    + 8 + 3 + 3 + 4 + 3 + 2 + 6 + 8 = 132

		    1 + 3 + 2 = 6
		    Result = 6
		*/
		task.digitalRoot("123908756245134574732783343268");
	}
}

input

 Given number : 123456
 Digital root : 3
 Given number : 123908756245134574732783343268
 Digital root : 6
// Include header file
#include <iostream>
#include <string>
using namespace std;

/*
    C++ Program
    Digital root of a large number using recursion
*/

class DigitSum
{
	public:
		// Find the digital root using recursion process
		string findDigitalRoot(string num)
		{
			if (num.length() == 1)
			{
				// Returning the result of single digit
				return num;
			}
			int sum = 0;
			// Sum of all digit
			for (int i = 0; i < num.length(); ++i)
			{
				sum += num[i] - '0';
			}
			return this->findDigitalRoot(to_string(sum));
		}
	// Handles the request to find digital root of given string number
	void digitalRoot(string num)
	{
		// Display given number
		cout << " Given number : " << num << endl;
		// Display calculated result
		cout << " Digital root : " << this->findDigitalRoot(num) << endl;
	}
};
int main()
{
	DigitSum *task = new DigitSum();
	/*
	Case A :
	Given number : 123456
	    1 + 2 + 3 + 4 + 5 + 6 = 21
	    2 + 1 = 3
	    Result =  3
	*/
	task->digitalRoot("123456");
	/*
	Case B :
	Given number : 123908756245134574732783343268
	    1 + 2 + 3 + 9 + 0 + 8 + 7 + 5 + 6 
	    + 2 + 4 + 5 + 1 + 3 + 4 
	    + 5 + 7 + 4 + 7 + 3 + 2 + 7 
	    + 8 + 3 + 3 + 4 + 3 + 2 + 6 + 8 = 132
	    1 + 3 + 2 = 6
	    Result = 6
	*/
	task->digitalRoot("123908756245134574732783343268");
	return 0;
}

input

 Given number : 123456
 Digital root : 3
 Given number : 123908756245134574732783343268
 Digital root : 6
// Include namespace system
using System;
/*
    Csharp Program
    Digital root of a large number using recursion
*/
public class DigitSum
{
	// Find the digital root using recursion process
	public String findDigitalRoot(String num)
	{
		if (num.Length == 1)
		{
			// Returning the result of single digit
			return num;
		}
		int sum = 0;
		// Sum of all digit
		for (int i = 0; i < num.Length; ++i)
		{
			sum += num[i] - '0';
		}
		return this.findDigitalRoot("" + sum);
	}
	// Handles the request to find digital root of given string number
	public void digitalRoot(String num)
	{
		// Display given number
		Console.WriteLine(" Given number : " + num);
		// Display calculated result
		Console.WriteLine(" Digital root : " + this.findDigitalRoot(num));
	}
	public static void Main(String[] args)
	{
		DigitSum task = new DigitSum();
		/*
		Case A :
		Given number : 123456
		    1 + 2 + 3 + 4 + 5 + 6 = 21
		    2 + 1 = 3
		    Result =  3
		*/
		task.digitalRoot("123456");
		/*
		Case B :
		Given number : 123908756245134574732783343268
		    1 + 2 + 3 + 9 + 0 + 8 + 7 + 5 + 6 
		    + 2 + 4 + 5 + 1 + 3 + 4 
		    + 5 + 7 + 4 + 7 + 3 + 2 + 7 
		    + 8 + 3 + 3 + 4 + 3 + 2 + 6 + 8 = 132
		    1 + 3 + 2 = 6
		    Result = 6
		*/
		task.digitalRoot("123908756245134574732783343268");
	}
}

input

 Given number : 123456
 Digital root : 3
 Given number : 123908756245134574732783343268
 Digital root : 6
<?php
/*
    Php Program
    Digital root of a large number using recursion
*/
class DigitSum
{
	// Find the digital root using recursion process
	public	function findDigitalRoot($num)
	{
		if (strlen($num) == 1)
		{
			// Returning the result of single digit
			return $num;
		}
		$sum = 0;
		// Sum of all digit
		for ($i = 0; $i < strlen($num); ++$i)
		{
			$sum += ord($num[$i]) - ord('0');
		}
		return $this->findDigitalRoot(strval($sum));
	}
	// Handles the request to find digital root of given string number
	public	function digitalRoot($num)
	{
		// Display given number
		echo (" Given number : ".$num."\n");
		// Display calculated result
		echo (" Digital root : ".$this->findDigitalRoot($num)."\n");
	}
}

function main()
{
	$task = new DigitSum();
	/*
	Case A :
	Given number : 123456
	    1 + 2 + 3 + 4 + 5 + 6 = 21
	    2 + 1 = 3
	    Result =  3
	*/
	$task->digitalRoot("123456");
	/*
	Case B :
	Given number : 123908756245134574732783343268
	    1 + 2 + 3 + 9 + 0 + 8 + 7 + 5 + 6 
	    + 2 + 4 + 5 + 1 + 3 + 4 
	    + 5 + 7 + 4 + 7 + 3 + 2 + 7 
	    + 8 + 3 + 3 + 4 + 3 + 2 + 6 + 8 = 132
	    1 + 3 + 2 = 6
	    Result = 6
	*/
	$task->digitalRoot("123908756245134574732783343268");
}
main();

input

 Given number : 123456
 Digital root : 3
 Given number : 123908756245134574732783343268
 Digital root : 6
/*
    Node JS Program
    Digital root of a large number using recursion
*/
class DigitSum
{
	// Find the digital root using recursion process
	findDigitalRoot(num)
	{
		if (num.length == 1)
		{
			// Returning the result of single digit
			return num;
		}
		var sum = 0;
		// Sum of all digit
		for (var i = 0; i < num.length; ++i)
		{
			sum += num.charAt(i).charCodeAt(0) - '0'.charCodeAt(0);
		}
		return this.findDigitalRoot("" + sum);
	}
	// Handles the request to find digital root of given string number
	digitalRoot(num)
	{
		// Display given number
		console.log(" Given number : " + num);
		// Display calculated result
		console.log(" Digital root : " + this.findDigitalRoot(num));
	}
}

function main()
{
	var task = new DigitSum();
	/*
	Case A :
	Given number : 123456
	    1 + 2 + 3 + 4 + 5 + 6 = 21
	    2 + 1 = 3
	    Result =  3
	*/
	task.digitalRoot("123456");
	/*
	Case B :
	Given number : 123908756245134574732783343268
	    1 + 2 + 3 + 9 + 0 + 8 + 7 + 5 + 6 
	    + 2 + 4 + 5 + 1 + 3 + 4 
	    + 5 + 7 + 4 + 7 + 3 + 2 + 7 
	    + 8 + 3 + 3 + 4 + 3 + 2 + 6 + 8 = 132
	    1 + 3 + 2 = 6
	    Result = 6
	*/
	task.digitalRoot("123908756245134574732783343268");
}
main();

input

 Given number : 123456
 Digital root : 3
 Given number : 123908756245134574732783343268
 Digital root : 6
#    Python 3 Program
#    Digital root of a large number using recursion
class DigitSum :
	#  Find the digital root using recursion process
	def findDigitalRoot(self, num) :
		if (len(num) == 1) :
			#  Returning the result of single digit
			return num
		
		sum = 0
		#  Sum of all digit
		i = 0
		while (i < len(num)) :
			sum += ord(num[i]) - ord('0')
			i += 1
		
		return self.findDigitalRoot(str(sum))
	
	#  Handles the request to find digital root of given string number
	def digitalRoot(self, num) :
		#  Display given number
		print(" Given number : ", num)
		#  Display calculated result
		print(" Digital root : ", self.findDigitalRoot(num))
	

def main() :
	task = DigitSum()
	# Case A :
	# Given number : 123456
	#    1 + 2 + 3 + 4 + 5 + 6 = 21
	#    2 + 1 = 3
	#    Result =  3
	task.digitalRoot("123456")
	# Case B :
	# Given number : 123908756245134574732783343268
	#    1 + 2 + 3 + 9 + 0 + 8 + 7 + 5 + 6 
	#    + 2 + 4 + 5 + 1 + 3 + 4 
	#    + 5 + 7 + 4 + 7 + 3 + 2 + 7 
	#    + 8 + 3 + 3 + 4 + 3 + 2 + 6 + 8 = 132
	#    1 + 3 + 2 = 6
	#    Result = 6
	task.digitalRoot("123908756245134574732783343268")

if __name__ == "__main__": main()

input

 Given number :  123456
 Digital root :  3
 Given number :  123908756245134574732783343268
 Digital root :  6
#    Ruby Program
#    Digital root of a large number using recursion
class DigitSum 
	#  Find the digital root using recursion process
	def findDigitalRoot(num) 
		if (num.length == 1) 
			#  Returning the result of single digit
			return num
		end

		sum = 0
		#  Sum of all digit
		i = 0
		while (i < num.length) 
			sum += num[i].ord - '0'.ord
			i += 1
		end

		return self.findDigitalRoot(sum.to_s)
	end

	#  Handles the request to find digital root of given string number
	def digitalRoot(num) 
		#  Display given number
		print(" Given number : ", num, "\n")
		#  Display calculated result
		print(" Digital root : ", self.findDigitalRoot(num), "\n")
	end

end

def main() 
	task = DigitSum.new()
	# Case A :
	# Given number : 123456
	#    1 + 2 + 3 + 4 + 5 + 6 = 21
	#    2 + 1 = 3
	#    Result =  3
	task.digitalRoot("123456")
	# Case B :
	# Given number : 123908756245134574732783343268
	#    1 + 2 + 3 + 9 + 0 + 8 + 7 + 5 + 6 
	#    + 2 + 4 + 5 + 1 + 3 + 4 
	#    + 5 + 7 + 4 + 7 + 3 + 2 + 7 
	#    + 8 + 3 + 3 + 4 + 3 + 2 + 6 + 8 = 132
	#    1 + 3 + 2 = 6
	#    Result = 6
	task.digitalRoot("123908756245134574732783343268")
end

main()

input

 Given number : 123456
 Digital root : 3
 Given number : 123908756245134574732783343268
 Digital root : 6
import scala.collection.mutable._;
/*
    Scala Program
    Digital root of a large number using recursion
*/
class DigitSum()
{
	// Find the digital root using recursion process
	def findDigitalRoot(num: String): String = {
		if (num.length() == 1)
		{
			// Returning the result of single digit
			return num;
		}
		var sum: Int = 0;
		// Sum of all digit
		var i: Int = 0;
		while (i < num.length())
		{
			sum += num.charAt(i).toInt - '0'.toInt;
			i += 1;
		}
		return findDigitalRoot( sum.toString());
	}
	// Handles the request to find digital root of given string number
	def digitalRoot(num: String): Unit = {
		// Display given number
		println(" Given number : " + num);
		// Display calculated result
		println(" Digital root : " + findDigitalRoot(num));
	}
}
object Main
{
	def main(args: Array[String]): Unit = {
		var task: DigitSum = new DigitSum();
		/*
		Case A :
		Given number : 123456
		    1 + 2 + 3 + 4 + 5 + 6 = 21
		    2 + 1 = 3
		    Result =  3
		*/
		task.digitalRoot("123456");
		/*
		Case B :
		Given number : 123908756245134574732783343268
		    1 + 2 + 3 + 9 + 0 + 8 + 7 + 5 + 6 
		    + 2 + 4 + 5 + 1 + 3 + 4 
		    + 5 + 7 + 4 + 7 + 3 + 2 + 7 
		    + 8 + 3 + 3 + 4 + 3 + 2 + 6 + 8 = 132
		    1 + 3 + 2 = 6
		    Result = 6
		*/
		task.digitalRoot("123908756245134574732783343268");
	}
}

input

 Given number : 123456
 Digital root : 3
 Given number : 123908756245134574732783343268
 Digital root : 6
import Foundation;
/*
    Swift 4 Program
    Digital root of a large number using recursion
*/
class DigitSum
{
	// Find the digital root using recursion process
	func findDigitalRoot(_ n: String) -> String
	{
		if (n.count == 1)
		{
			// Returning the result of single digit
			return n;
		}
      	let num = Array(n);
		var sum = 0;
		// Sum of all digit
		var i = 0;
		while (i < num.count)
		{
			sum += Int(UnicodeScalar(String(num[i]))!.value) 
              	- Int(UnicodeScalar(String("0"))!.value);
			i += 1;
		}
		return self.findDigitalRoot(""
			+ String(sum));
	}
	// Handles the request to find digital root of given string number
	func digitalRoot(_ num: String)
	{
		// Display given number
		print(" Given number : ", num);
		// Display calculated result
		print(" Digital root : ", self.findDigitalRoot(num));
	}
}
func main()
{
	let task = DigitSum();
	/*
	Case A :
	Given number : 123456
	    1 + 2 + 3 + 4 + 5 + 6 = 21
	    2 + 1 = 3
	    Result =  3
	*/
	task.digitalRoot("123456");
	/*
	Case B :
	Given number : 123908756245134574732783343268
	    1 + 2 + 3 + 9 + 0 + 8 + 7 + 5 + 6 
	    + 2 + 4 + 5 + 1 + 3 + 4 
	    + 5 + 7 + 4 + 7 + 3 + 2 + 7 
	    + 8 + 3 + 3 + 4 + 3 + 2 + 6 + 8 = 132
	    1 + 3 + 2 = 6
	    Result = 6
	*/
	task.digitalRoot("123908756245134574732783343268");
}
main();

input

 Given number :  123456
 Digital root :  3
 Given number :  123908756245134574732783343268
 Digital root :  6
/*
    Kotlin Program
    Digital root of a large number using recursion
*/
class DigitSum
{
	// Find the digital root using recursion process
	fun findDigitalRoot(num: String): String 
	{
		if (num.length == 1)
		{
			// Returning the result of single digit
			return num;
		}
		var sum: Int = 0;
		// Sum of all digit
		var i: Int = 0;
		while (i < num.length)
		{
			sum += num.get(i).toInt() - '0'.toInt();
			i += 1;
		}
		return this.findDigitalRoot(sum.toString());
	}
	// Handles the request to find digital root of given string number
	fun digitalRoot(num: String): Unit
	{
		// Display given number
		println(" Given number : " + num);
		// Display calculated result
		println(" Digital root : " + this.findDigitalRoot(num));
	}
}
fun main(args: Array < String > ): Unit
{
	val task: DigitSum = DigitSum();
	/*
	Case A :
	Given number : 123456
	    1 + 2 + 3 + 4 + 5 + 6 = 21
	    2 + 1 = 3
	    Result =  3
	*/
	task.digitalRoot("123456");
	/*
	Case B :
	Given number : 123908756245134574732783343268
	    1 + 2 + 3 + 9 + 0 + 8 + 7 + 5 + 6 
	    + 2 + 4 + 5 + 1 + 3 + 4 
	    + 5 + 7 + 4 + 7 + 3 + 2 + 7 
	    + 8 + 3 + 3 + 4 + 3 + 2 + 6 + 8 = 132
	    1 + 3 + 2 = 6
	    Result = 6
	*/
	task.digitalRoot("123908756245134574732783343268");
}

input

 Given number : 123456
 Digital root : 3
 Given number : 123908756245134574732783343268
 Digital root : 6




Comment

Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.

New Comment