亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

老師說這是一個階乘遞歸,算數式是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 關注
  • 147 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號