题目:
In this kata, you must create a digital root function.
A digital root is the recursive sum of all the digits in a number. Given n, take the sum of the digits of n. If that value has two digits, continue reducing in this way until a single-digit number is produced. This is only applicable to the natural numbers.
Here’s how it works (Ruby example given):
digital_root(16) => 1 + 6 => 7
digital_root(942) => 9 + 4 + 2 => 15 … => 1 + 5 => 6
digital_root(132189) => 1 + 3 + 2 + 1 + 8 + 9 => 24 … => 2 + 4 => 6
digital_root(493193) => 4 + 9 + 3 + 1 + 9 + 3 => 29 … => 2 + 9 => 11 … => 1 + 1 => 2
我的解法很普通:
function digital_root(n) {
while(n > 10 ) {
var n = n.toString().split('').reduce(function (s, v) {return Number(s)+ Number(v)});
}
return n;
}
很酷的解法:
function digital_root(n) {
return (n - 1) % 9 + 1;
}
但是并没有看懂,谁能帮我解答一下原理,谢谢了?