33.1k views
2 votes
Write a recursive function called sumDigits with the following signature: public static long sumDigits(long n) that computes the sum of the digits in a number repeatedly, until the sum is a single digit. For example, if we call sumDigits(123456), the following would result: sumDigits(123456) => 1+2+3+4+5+6 => 21 => 2+1 => 3 so the final answer would be 3. You must meaningfully use recursion for this lab in order to receive any credit. Hint: For this problem it might be useful to convert back and forth between longs and strings. This can be done using the Long.parseLong method and the Long.toString method.

User Matchifang
by
6.3k points

1 Answer

2 votes

Here you go:

public static long sumDigits(long n) {

if (n < 10) {

return n; // our exit criterion

}

String str = Long.toString(n);

long sum = 0;

for(int i=0; i<str.length(); i++) {

sum += Character.getNumericValue(str.charAt(i));

}

return sumDigits(sum);

}

User Ishwr
by
6.5k points