我正在解决一个Codewars问题,而且我相信我已经把它解决了:
function digital_root(n) {
// ...
n = n.toString();
if (n.length === 1) {
return parseInt(n);
} else {
let count = 0;
for (let i = 0; i < n.length; i++) {
//console.log(parseInt(n[i]))
count += parseInt(n[i]);
}
//console.log(count);
digital_root(count);
}
}
console.log(digital_root(942));
基本上,它应该找到一个“数字根”:
数字根是一个数字中所有数字的递归和。给定n,取n的各个数字的总和。如果该值有两位数,则继续以这种方式减少,直到产生单个数字为止。这仅适用于自然数。
因此,实际上我在最后得到了正确的答案,但由于某种原因,在if语句(我正在观察调试器运行,并且它确实进入该语句)中,它将说返回值是正确的值。
但是然后它跳出if语句,尝试从主digital_root函数返回?
这是为什么? 当它命中if语句时,它不应该跳出吗? 我不明白为什么它尝试跳出if语句,然后尝试从digital_root返回空值,因此返回值最终变成未定义?