我对在此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>
答案 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