猿问

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

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呢?

皈依舞
浏览 165回答 3
3回答

呼如林

function box(num){if(num <= 1)return 1;elsereturn 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们

function&nbsp;box(num)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(num&nbsp;<=&nbsp;1)&nbsp;{&nbsp;//&nbsp;如果当前num值小于等于1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;1;&nbsp;&nbsp;&nbsp;//&nbsp;函数返回值是1&nbsp;&nbsp;&nbsp;&nbsp;}else&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;如果当前num值大于1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;num&nbsp;*&nbsp;box(num-1);&nbsp;//&nbsp;返回值是当前的num值乘以【box(当前的num值-1)这个函数调用后的返回值】&nbsp;&nbsp;&nbsp;&nbsp;}}alert(box(4));首先box是一个函数名,num是函数的参数。box(4)就是调用box函数,并且传递的参数值是4。即num值被赋值为4。

守着星空守着你

box(1)=1;box(2)=2*box(1)=2*1box(3)=3*box(2)=3*2*1box(4)=4*box(3)=4*3*2*1
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答