javascript问题 使用递归算法计算阶乘
问:functioncalc(n)是怎么运行的?尤其if(n>0)return(calc(n-1)*n);return(1);这段如何运行?<html><head><me...
问:function calc(n)是怎么运行的?尤其 if(n>0)return(calc(n-1)*n); return(1); 这段如何运行?
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=GB2312" />
<title>4-4 使用递归算法计算阶乘</title>
</head>
<body style="overflow:auto; padding:0px; margin:0px;">
<div style="font-size:14px; font-weight:bold; color:white; font-family:Arial, 宋体; background-color:#6090DA; padding:4px 10px;">
<script>
function calc(n){
if(n>0)return(calc(n-1)*n);
return(1);
}
document.write("正整数8的阶乘是"+calc(8));
document.write("<br>正整数16的阶乘是"+calc(16));
</script>
</div>
</body>
</html> 展开
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=GB2312" />
<title>4-4 使用递归算法计算阶乘</title>
</head>
<body style="overflow:auto; padding:0px; margin:0px;">
<div style="font-size:14px; font-weight:bold; color:white; font-family:Arial, 宋体; background-color:#6090DA; padding:4px 10px;">
<script>
function calc(n){
if(n>0)return(calc(n-1)*n);
return(1);
}
document.write("正整数8的阶乘是"+calc(8));
document.write("<br>正整数16的阶乘是"+calc(16));
</script>
</div>
</body>
</html> 展开
1个回答
展开全部
具体假设法:设n=8
calc(8)=calc(7)*8
calc(7)=calc(6)*7
calc(6)=calc(5)*6
.......
calc(1)=calc(0)*1
calc(0)=1
依次带入:calc(8)=8*7*6*.....*1
calc(8)=calc(7)*8
calc(7)=calc(6)*7
calc(6)=calc(5)*6
.......
calc(1)=calc(0)*1
calc(0)=1
依次带入:calc(8)=8*7*6*.....*1
追问
不是n>0吗?怎么还能calc(0)=1?
另外 return(1);存在有什么意义?
追答
当n=0时,(0>0)=false;也就是说if条件不满足时,这时候直接return 1;
当然
function calc(n){
if(n>1)return(calc(n-1)*n);
return 1;
}
这样得到的结果也是一样的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询