皈依舞
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);我這樣說,不知道你懂沒懂

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
提交
取消