各位大神能帮我看下,下面js代码运行的时候报错堆栈溢出,求指导啊
<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>1123123123</title></he...
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>1123123123</title>
</head>
<body>
<input type="text" id="inputNum">
<button id="getResult" onclick="callee1()">计算</button>
<script type="text/javascript">
function callee1(num) {
num=document.getElementById('inputNum').value;
if (num <= 1) {
return 1;
}
else {
return num * arguments.callee(num - 1);
}
}
var c=callee1();
alert(c);
</script>
</body>
</html> 展开
<html lang="en">
<head>
<meta charset="UTF-8">
<title>1123123123</title>
</head>
<body>
<input type="text" id="inputNum">
<button id="getResult" onclick="callee1()">计算</button>
<script type="text/javascript">
function callee1(num) {
num=document.getElementById('inputNum').value;
if (num <= 1) {
return 1;
}
else {
return num * arguments.callee(num - 1);
}
}
var c=callee1();
alert(c);
</script>
</body>
</html> 展开
1个回答
展开全部
你是不是想计算,当输入n时,结果输出为
n*n-1*n-2....*1
如果是这样的,那你的写法有问题
递归的时候,每次你在callee1中读取的
num=document.getElementById('inputNum').value;
都是一样的你还需要判断num的数据类型
document.getElementById('inputNum').value的数据类型不是数字
代码严谨些比较好
修改后
<input type="text" id="inputNum">
<button id="getResult" onclick="callee2()">计算</button>
<script type="text/javascript">
function callee2(){
num= parseInt( document.getElementById('inputNum').value);
if(isNaN(num)){
throw '参数错误!';
}
console.log( callee1(num));
}
function callee1(num) {
if (num <= 1) {
return 1;
}
else {
return num * arguments.callee(num - 1);
}
}
</script>
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询