Javascript'太多递归'在一个简单的阶乘函数上

问题描述:

我在这里解释了一个以上的'太多递归'的问题和答案,但他们每个人都解决了一个特定的问题,但我无法从他们推导出正确的答案回答此代码错误,如何解决它,以及为什么我得到该错误:Javascript'太多递归'在一个简单的阶乘函数上

<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> 
+5

你需要通过输入功能你第一次调用它,否则它会做无限递归。 –

+0

函数调用时传递参数或检查输入值不是n。 –

您需要传递参数值。

<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>

+0

投票那些评论也看起来你很有用它帮助他人 –

+0

嗨Sinsuren,谢谢你的回答,但:1.)你的代码返回相同的错误('太多递归')2.)我知道迭代方法,但我需要它以递归方式工作,请再次参考我的问题。检查你的答案,它不起作用。 – clusterBuddy

+0

是的,它现在效果很好,你保持代码的一致性,真的很有帮助,谢谢。 – clusterBuddy

嘿@clusterBuddy使其正确document.getElementById('num').valdocument.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> 
+0

你改变了一些东西,但你的代码像黄金一样工作。谢谢维沙尔先生。 – clusterBuddy