【发布时间】:2020-06-11 12:46:18
【问题描述】:
问题
数字根是一个数字中所有数字的递归和。
给定n,取n的数字之和。如果该值超过一位,则继续以这种方式减少,直到产生一位数。这仅适用于自然数。
我的代码
function digital_root(n) {
let a = n.toString();
let ai = a.split('');
let bi = ai.map((item)=>{
return parseInt(item);
})
let newArr = [];
for(let i = 0; i < bi.length; i++){
let c = bi[i];
newArr.push(c);
}
let d = newArr.reduce((total, item)=>{
return total + item;
}, 0);
function recursive(d){
if(d < 10){
return d
}
a = d.toString();
ai = a.split('');
bi = ai.map((item)=>{
return parseInt(item);
});
newArr = [];
for(let i = 0; i < bi.length; i++){
let c = bi[i];
newArr.push(c);
}
d = newArr.reduce((total, item)=>{
return total + item;
}, 0);
return recursive(d);
}
return d;
}
console.log(digital_root(123));
console.log(digital_root(111));
console.log(digital_root(51024));
我的问题
由于某种原因,如果 d >= 9,代码似乎无法识别我需要再次运行该操作。
如何解决我已经完成的代码的问题?
也出于兴趣,你会怎么处理,我的回答似乎很复杂!
【问题讨论】:
标签: javascript algorithm recursion