因此,我知道这很可能是重复的,但是在经过一个多小时的研究之后,我一直无法弄清楚如何解决我的问题。
此函数将数字中的数字分开,将它们加在一起,如果结果数字有多个数字,则将结果数字递归地送回到函数中进行处理。我的退货声明给我“未定义”,我不确定为什么。如果它是在if语句中定义的,我不明白为什么在else语句中却不是这样:
function digital_root(n) {
var numArray = n.toString().split('');
var accumulator = 0;
for(var i = 0; i < numArray.length; i++){
accumulator += parseInt(numArray[i]);
}
if(accumulator >= 10){
digital_root(accumulator);
}
else{return accumulator};
};
digital_root(942);//should be 6, after 15 is passed back into digital_root()
// but output is undefined.
最佳答案
您需要返回递归调用的结果,否则它将无法向上传播。还有你的最后一个是多余的。
function digital_root(n) {
var numArray = n.toString().split('');
var accumulator = 0;
for(var i = 0; i < numArray.length; i++){
accumulator += parseInt(numArray[i]);
}
if(accumulator >= 10){
return digital_root(accumulator);
}
return accumulator;
};
digital_root(942);//ta-daaaa