Add Digits
Problem
Given a non-negative integer num, repeatedly add all its digits until the result has only one digit.
Example
Given num = 38.
The process is like: 3 + 8 = 11, 1 + 1 = 2. Since 2 has only one digit, return 2.
Solution
A math trick: the sum of digits mod 9 is the same as the number mod 9. For example:
38 % 9 = 2,(3 + 8) % 9 = 11 % 9 = 2111 % 9 = 3,(1 + 1 + 1) % 9 = 318 % 9 = 0,(1 + 8) % 9 = 0
However there's one exception in this problem: 9 % 9 = 0 but 9 is a single digit so should return 9 instead of 0. To handel this, we can either
return num % 9 == 0 ? 9 : num % 9
or
return 1 + (num - 1) % 9