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);我这样说,不知道你懂没懂

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。
添加回答
举报
0/150
提交
取消