数字根是数字中所有数字的递归和。给定n,取n的数字的和,如果该值有两位数字,继续以这种方式减少,直到产生一位数。这只适用于自然数。
实现逻辑:
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) {
return (n - 1) % 9 + 1;
}
实现代码二:
function digital_root(n) {
if (n < 10) return n;
return digital_root(
n.toString().split('').reduce(function(acc, d) { return acc + +d; }, 0));
}
实现代码三:
function digital_root(n) {
if (n < 10)
return n;
for (var sum = 0, i = 0, n = String(n); i < n.length; i++)
sum += Number(n[i]);
return digital_root(sum);
}
实现代码四:
function digital_root(n) {
let newn = 0;
if(n >= 10){
for(let i=0;i< n.toString().length;i++){
newn += Number(n.toString()[i]);
}
}
return newn >= 10?digital_root(newn):newn;
}