数字根是数字中所有数字的递归和。给定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;
}