Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对输入javascript执行递归函数_Javascript_Html_Recursion_Input - Fatal编程技术网

对输入javascript执行递归函数

对输入javascript执行递归函数,javascript,html,recursion,input,Javascript,Html,Recursion,Input,我正在尝试运行一个递归函数,该函数计算HTML输入上数字的阶乘。我已经知道如何通过迭代来实现,我希望递归地实现结果。但是当我这样做的时候,我会得到一个“太多递归”的错误。我错过了什么 HTML <input type="text" name="factorial_input" placeholder="Enter a number"> <div class="button" onclick="calculateFactorial()">Let's see

我正在尝试运行一个递归函数,该函数计算HTML输入上数字的阶乘。我已经知道如何通过迭代来实现,我希望递归地实现结果。但是当我这样做的时候,我会得到一个“太多递归”的错误。我错过了什么

HTML

    <input type="text" name="factorial_input" placeholder="Enter a number">
    <div class="button" onclick="calculateFactorial()">Let's see the factorial</div>

}

如果不将getInputValue传递给函数,为什么要将其作为函数参数

不要把事情混在一起,这只会使事情更难理解

相反,制作一个只计算阶乘值的阶乘函数,将输入的值传递给该函数,然后将其输出到console.log()


由于要从递归函数的输入中检索值,所以递归问题层出不穷,这就是为什么
getInputValue
变量每次都会获得新值的原因。这是你做的错误的实现。试试下面给出的例子

HTML

让我们看看阶乘
剧本
函数计算系数(getInputValue){
让getInputValue=parseInt(document.querySelector(“input”).value);
log(事实(getInputValue));
}
函数事实(n){
如果(n==未定义){
返回0;
}else如果(n==0){
返回1;
}否则{
返回n*=事实(n-1);
}
}

递归函数需要一个满意的条件才能从Recursion返回调用堆栈。否则,它将转到无休止的呼叫。

是的,谢谢!我没有想到在另一个函数中使用函数调用。很有帮助
function calculateFactorial(getInputValue) {
getInputValue = document.querySelector("input").value;

if (!getInputValue) {
    console.log("You must enter a number");
} else if (getInputValue == 0) {
    return console.log("1");
} else {
    return console.log(getInputValue *= calculateFactorial(getInputValue - 1));
}

// console.log(getInputValue);
function factorial(number) {
  return number == 1 || number == 0 ? number : number * factorial(number - 1);
}