JS新手:如何正确调用HTML文档中的递归函数?

时间:2019-05-16 07:35:37

标签: javascript recursion

我对在此HTML文档中正确调用该函数有些困惑。我究竟做错了什么?该函数应返回1到在输入字段中输入的任何数字之间的所有数字的总和,但返回的是NaN。 如何分配从函数返回的值并将其显示到禁用的输入字段?

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Recursion</title>
    <script>
    let recursiveSum = (num) => {
        if (num === 1) {
            return 1;
        } else {
            return num + recursiveSum(num-1);
        }
    }
    </script>
</head>
<body>
   <h1>Find the sum of 1 to some number!</h1>
<form id="myForm" name="myForm">
  <input type="number" id="numInput" name="numInput" placeholder="Enter a positive number here" autofocus>
  <input type="text" id="sum" name="sum" disabled>
  <button type="button" onclick="recursiveSum(this.form.numInput.value);">Calculate! </button>
</form>
</body>
</html>

2 个答案:

答案 0 :(得分:1)

当前,您的函数没有显式返回任何值,因此undefined是从函数隐式返回的。

还在每个递归调用中设置value毫无意义。您应该在所有递归的结果之后设置该值。

const elm = document.getElementById("sum")

function btnClick(num){
  let recursiveSum = (num) => {
    if(num === 1) return 1;
    return num+recursiveSum(num-1)
  }
  elm.value = recursiveSum(+num)
}
<h1>Find the sum of 1 to some number!</h1>
<form id="myForm" name="myForm">
  <input type="number" id="numInput" name="numInput" placeholder="Enter a positive number here" autofocus>
  <input type="text" id="sum" name="sum" disabled>
  <button type="button" onclick="btnClick(this.form.numInput.value);">Calculate! </button>
</form>

答案 1 :(得分:1)

您需要将计算与显示值分开,以便可以正确计算总和。一旦获得总数,就可以很容易地显示它。

xxx@microsoft.com
read a certain mailbox