我正在解决一个 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
因此返回值最终未定义?