这是我目前正在处理的功能:
function getSmallestDivisor(xVal) {
if (xVal % 2 === 0) {
return 2;
} else if (xVal % 3 === 0) {
return 3;
} else {
var xSqrt = Math.sqrt(xVal);
if (xSqrt % 1 === 0) {
getSmallestDivisor(xSqrt);
} else {
return xVal;
}
}
}
alert(getSmallestDivisor(121));
我已经设计了上面的函数来返回整数的最低除数。考虑案例
121
。它实际上应该在当前上下文中返回11
。但是它正在返回undefined
。我检查了递归调用发生了多少次。他们实际上发生了两次。我在这两个不同的调用中记录了
xVal
的值,它们显示了121
和11
。我真的很困惑为什么此函数当前返回undefined
。我创建了a jsfiddle demo。
最佳答案
if (xSqrt % 1 === 0) {
return getSmallestDivisor(xSqrt); // missing return here
} else {
return xVal;
}
演示:Fiddle