Add tests for GenericRoot (#4276)

This commit is contained in:
Piotr Idzik
2023-08-03 22:14:59 +02:00
committed by GitHub
parent 087d523ed0
commit ee23b6c2e5
2 changed files with 43 additions and 19 deletions

View File

@ -4,27 +4,27 @@ package com.thealgorithms.maths;
* Algorithm explanation:
* https://technotip.com/6774/c-program-to-find-generic-root-of-a-number/#:~:text=Generic%20Root%3A%20of%20a%20number,get%20a%20single%2Ddigit%20output.&text=For%20Example%3A%20If%20user%20input,%2B%204%20%2B%205%20%3D%2015.
*/
public class GenericRoot {
public static void main(String[] args) {
int number1 = 1234;
int number2 = 12345;
int result1 = genericRoot(number1);
int result2 = genericRoot(number2);
System.out.println("Generic root of " + number1 + " is: " + result1);
System.out.println("Generic root of " + number2 + " is: " + result2);
public final class GenericRoot {
private GenericRoot() {
}
private static int genericRoot(int n) {
int root = 0;
while (n > 0 || root > 9) {
if (n == 0) {
n = root;
root = 0;
}
root += n % 10;
n /= 10;
private static int base = 10;
private static int sumOfDigits(final int n) {
assert n >= 0;
if (n < base) {
return n;
}
return root;
return n % base + sumOfDigits(n / base);
}
public static int genericRoot(final int n) {
if (n < 0) {
return genericRoot(-n);
}
if (n > base) {
return genericRoot(sumOfDigits(n));
}
return n;
}
}