这是我目前正在处理的功能:

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的值,它们显示了12111。我真的很困惑为什么此函数当前返回undefined

我创建了a jsfiddle demo

最佳答案

if (xSqrt % 1 === 0) {
    return getSmallestDivisor(xSqrt); // missing return here
} else {
    return xVal;
}

演示:Fiddle

09-20 14:37