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>
您需要传递参数值。
<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>
投票那些评论也看起来你很有用它帮助他人 –
嗨Sinsuren,谢谢你的回答,但:1.)你的代码返回相同的错误('太多递归')2.)我知道迭代方法,但我需要它以递归方式工作,请再次参考我的问题。检查你的答案,它不起作用。 – clusterBuddy
是的,它现在效果很好,你保持代码的一致性,真的很有帮助,谢谢。 – clusterBuddy
嘿@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>
你改变了一些东西,但你的代码像黄金一样工作。谢谢维沙尔先生。 – clusterBuddy
你需要通过输入功能你第一次调用它,否则它会做无限递归。 –
函数调用时传递参数或检查输入值不是n。 –