数字根是数字中所有数字的递归和。给定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) 
} 
实现代码二:
 
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;
}