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>
展开
 我来答
尘埃光年
2014-05-05
知道答主
回答量:8
采纳率:0%
帮助的人:7.7万
展开全部
具体假设法:设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
追问
不是n>0吗?怎么还能calc(0)=1?

另外 return(1);存在有什么意义?
追答
  1. 当n=0时,(0>0)=false;也就是说if条件不满足时,这时候直接return 1;

  2. 当然 

      function calc(n){

                if(n>1)return(calc(n-1)*n);

                return 1;

            }

    这样得到的结果也是一样的。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式