提问者:小点点

无法返回js中的阶乘(已解决,不必回答这个问题,我无法删除问题)[重复]


帮助我修复此代码:

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        var i;
        function fact(i) {
            var n=1
            for (x=1;x=i;x++) {
                n*=i
            }
        }
        function factorial() {
            i=Number(prompt("what number to return the factorial"))
            alert(fact(i))
        }
    </script>
</head>
<body>
    <button onclick="factorial()">Factorial.</button>
</body>
</html>

当我运行我的文件时,它显示页面无响应。 这个代码怎么了? 是for循环,变量“i”还是其他什么错误?


共1个答案

匿名用户

有很多事情是错的。 首先,您的for循环是不正确的。 您的for循环是for(x=1;x=i;x++){,而它应该是for(x=1;x<=i;x++){,这意味着您的循环永远不会结束。此外,您永远不会返回最终数字,这意味着您无法访问它。您的fact函数应该如下所示:

function fact(i) {
    var n = 1;
    for (var x = 1; x <= i; i ++) {
        n *= x;
    }
    return n;
}