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

老师说这是一个阶乘递归,算数式是4*3*2*1,这个算法是什么出来的呢?

老师说这是一个阶乘递归,算数式是4*3*2*1,这个算法是什么出来的呢?

皈依舞 2022-10-26 23:19:17
function box(num) {if (num <= 1) {return 1;}else {return num * box(num-1);}}alert(box(4));请问:第一行:box(num), 这里的box后面的括号,中间的连接符是什么?不知道这样问是不是正确,就是(num)是box的参数,box等于num.还是说box乘以num?第四行:num * box(num-1) , 请问这句话能够详细的解释一下吗?不是很明白.个人的猜测啊,假设在这里num是box的参数,box是等于num的,又假设num=4,那么译为数学的算数是4*4(4-1),但是这样的结果是不对的,所以能请大家简单的解释一下吗?第五行:box(4),这里的问题和第一个问题一样,box(4)的意思到底是什么?是说4是box的参数,在这里box是狭义的等于4的,还是说box乘以4?为什么得到的结果是24呢?
查看完整描述

3 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

function box(num){
if(num <= 1)
return 1;
else
return num * box(num - 1);
}
alert(box(4));
我跟你说一下这个function 是这么运行的吧
首先会执行这句alert(box(4));调用box方法,传人4;然后判断 4 <= 1 不成立,走 else 也就是 4*box(4 -1 ); 然后在执行 box(num)方法 ,传人 3;然后判断 3 <= 1 不成立,走else 也就是 3 * box(3-1) ;我不知道这里你有没有这个概念,运算是从左到右,也就是说,现在 是 4*3*box(3-1)
下面类推,当 return 4*3*2*box(2-1);时,也就 num<= 1 成立时,return 1;返回1;也就是递归结束了,那么,现在 alert(box(4)); 其实就是 alert(4*3*2*1);我这样说,不知道你懂没懂

查看完整回答
反对 回复 2022-11-01
?
MM们

TA贡献1886条经验 获得超2个赞


function box(num) {    if (num <= 1) { // 如果当前num值小于等于1        return 1;   // 函数返回值是1    }else {         // 如果当前num值大于1        return num * box(num-1); // 返回值是当前的num值乘以【box(当前的num值-1)这个函数调用后的返回值】    }}alert(box(4));

首先box是一个函数名,num是函数的参数。

box(4)就是调用box函数,并且传递的参数值是4。即num值被赋值为4。


查看完整回答
反对 回复 2022-11-01
?
守着星空守着你

TA贡献1799条经验 获得超8个赞

box(1)=1;
box(2)=2*box(1)=2*1
box(3)=3*box(2)=3*2*1
box(4)=4*box(3)=4*3*2*1

查看完整回答
反对 回复 2022-11-01
  • 3 回答
  • 0 关注
  • 164 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号