林求解codewars问题和IM肯定我已经得到了它的工作:Javascript递归函数没有返回值?
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
状态NT,然后尝试从digital_root
返回任何内容,以便返回值最终未定义?
废话,我不是超级习惯使用递归。我想......你能解释我们为什么要回来吗?是不是因为你想把“未来”的价值回归到现在呢? – msmith1114
@ msmith1114查看解释!我希望这是有用的。 –