如何对数字进行因式分解?

时间:2016-10-09 18:14:17

标签: javascript jquery debugging

当我在Chrome中运行此代码时,它会报告“超出最大调用堆栈大小”。

http://codepen.io/tcadams9/pen/JRLyOq

if (randomNum === 0 || randomNum === 1)
    return 1;
for (var i = randomNum - 1; i >= 1; i--) {
    num *= i;
}
return factorial();

$("#button2").click(factorial);

1 个答案:

答案 0 :(得分:0)

您正在使用DOM元素搞乱变量。 ID为“randomNum”的DOM元素值不等于变量randomNum。要获得该值,您需要$("#randomNum").val()。 这似乎是递归和非递归方法的混合。你需要清理它: 的

randomNum = 6; //set the value before

function factorial () {
    var num =1;
    for (var i = randomNum - 1; i >= 1; i--) {
        num *= i;
    }
    return num;
}

$("#button2").click(function () {
  randomNumber = $("#randomNumber").val();
  $("#Factorial").html(
    factorial()
  )
})


递归

function factorial (randomNum) {
    if (randomNum === 0 || randomNum === 1)
        return 1;
    return randomNum * factorial(randomNum-1);
}

但是,你不能通过'click'调用该函数,因为它没有给出randomNumber参数。
要解决此问题,您需要将evenHandler的注册更改为

$("#button2").click(function () {
  $("#Factorial").html(
    factorial($("#randomNumber").val())
  )
})

经过测试,它运行良好。