如何因式分解一个数

How do I factorialize a number?

本文关键字:一个 因式分解      更新时间:2023-09-26

当我在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);

你把变量和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())
  )
})

测试过了,运行正常