【发布时间】:2017-09-24 16:18:21
【问题描述】:
我正在解决一个代码战问题,我很确定我已经成功了:
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 不返回任何内容,所以返回值最终是未定义的?
【问题讨论】:
标签: javascript recursion