简体   繁体   English

Javascript 对简单阶乘的“太多递归” function

[英]Javascript 'too much recursion' on a simple factorial function

I went over more than a few 'too much recursion' questions and answers here but each of them solves a specific issue, yet I couldn't deduce a proper answer from them to answer this code error, how to solve it and why I'm getting that error:我在这里讨论了很多“太多递归”的问题和答案,但每个问题和答案都解决了一个特定的问题,但我无法从他们那里推断出正确的答案来回答这个代码错误,如何解决它以及为什么我'我收到那个错误:

<body>
<input type="number" id="num">
<input type="button" id="submit" onclick="factor()"><br>
<div id="yourResult"></div>
<script>
    inputValue = document.getElementById('num').val;
    function factor(n){
        if(n==0){
            return 1;
        }
        if(n==1){
            return 1;
        }
        return n * factor(n-1);
    }
    function result() {
        $('yourResult').append('<p>your factorial of ' + inputValue + ' equals to: ' + factor()+'</p>');
    }
</script>
</body>

You need to pass the parameter value. 您需要传递参数值。

 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <body> <input type="number" id="num"> <input type="button" id="submit" value="Get Factorial" onclick="result()"><br> <div id="yourResult"></div> <script> function factor(n){ if(n==0){ return 1; } if(n==1){ return 1; } return n * factor(n-1); } function result() { inputValue = document.getElementById('num').value; $('#yourResult').append('<p>your factorial of ' + inputValue + ' equals to: ' + factor(inputValue)+'</p>'); } </script> </body> 

Hey @clusterBuddy make it correct document.getElementById('num').val to document.getElementById('num').value and try below code it will gives you the factorial result: 嘿@clusterBuddy使其document.getElementById('num').val正确为document.getElementById('num').value并尝试下面的代码,它将为您提供阶乘结果:

<script type="text/javascript">
    function factor(){
    var n=document.getElementById("num").value;


      var factorial = function(n) {
        if(n == 0) {
            return 1
        } else {
            return n * factorial(n - 1);
        }

      }
      document.getElementById("yourResult").innerHTML ="your factorial is"+factorial(n);

  }
</script>
<body>
<input type="text" id="num">
<input type="button" id="submit" value="submit" onclick="factor()"><br>
<span id="yourResult"></span>
</body>

This function can be easier:这个 function 可以更简单:

function factor(n) {return !!+n && (n <= 1 ? n : n * factor(--n))}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM