为了账号安全,请及时绑定邮箱和手机立即绑定

这个函数是怎么计算的,结果是72,为什么不是12

这个函数是怎么计算的,结果是72,为什么不是12

jugge 2017-03-11 14:26:00
<!DOCTYPE html> <html>     <head>         <meta charset="UTF-8">         <title></title>     </head>     <body>         <script type="text/javascript">             function fun(n){                 var t;                 if((n==0)||(n==1)){                     t=3;                 }else{                     t=n*fun(n-1);                 }                 return t;                 }             document.write(fun(4));         </script>     </body> </html>
查看完整描述

3 回答

已采纳
?
水墨流沙

TA贡献19条经验 获得超33个赞

第一次循环是4*fun(3),第二次fun(3)就是3*fun(2),第三次fun(2)就是2*fun(1),第四次fun(1)就是t=3,所以结果就是4*3*2*3=72。没错啊

查看完整回答
1 反对 回复 2017-03-11
?
习惯受伤

TA贡献885条经验 获得超1144个赞

典型的递归函数,其中:

if((n==0)||(n==1)){
    t=3;
}

这部分没有调用自身的部分称之为“递归出口”,所有递归函数都必须有一个有效的递归出口。下边else部分就是递归调用了。递归的思想就是将复杂的事情简单化。

查看完整回答
2 反对 回复 2017-03-11
?
西兰花伟大炮

TA贡献376条经验 获得超318个赞


因为这是一个递归函数调用,你觉得等于12是因为你认为函数只执行了一次,你就调用了一次,实际上调用了4次,所以是72不奇怪,我也没去验证,但原因是这样的

查看完整回答
2 反对 回复 2017-03-11
  • 3 回答
  • 0 关注
  • 1696 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信