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

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

遞歸函數的問題求解答

遞歸函數的問題求解答

winner4265975 2017-03-26 15:17:38
function?add(i){ ????if(i==3){ ????????return?i; ????} ????else{ ?????????add(++i); ????} alert(add(3))//3 alert(add(0))//undefined我知道這個是關于執行環境棧的問題,但是是具體原因還是不太明白求高手詳細分析下,我用debugger看了add(0)當i==3走了return為什么函數還繼續?然后i再減小到1彈出結果undefined,為什么不是i為0時彈出?
查看完整描述

3 回答

?
winner4265975

TA貢獻19條經驗 獲得超17個贊

我明白原因了這個就是返回值的問題,只有i為3時才有返回值,其余沒有返回值,當然是undefined。還有謝謝下面的同學,看來我要重新看看數據結構了!

查看完整回答
反對 回復 2017-03-26
?
winner4265975

TA貢獻19條經驗 獲得超17個贊

http://img1.sycdn.imooc.com//58d7a8ac00017ba002830171.jpg

換成i+1就是i減小到0彈出,我覺得是彈出的是add(0);改成i++就有錯誤Maximum call stack size exceeded?死循環了!這和?i++和++i有關的?????????????????????

查看完整回答
反對 回復 2017-03-26
?
angie

TA貢獻56條經驗 獲得超8個贊

因為函數調用要入棧,遞歸函數也一樣,所以最終要出棧,就像你看到的那。 i 為 0 時就是你alert的時候啊,就是你調用add(0)的時候。 即便學習前端,我建議也要了解計算機的一些基本概念,不然就會出現這樣的困惑
查看完整回答
反對 回復 2017-03-26
  • winner4265975
    winner4265975
    求解為什么i==3時沒有返回值?還有執行環境入棧是保存這個函數的參數局部變量和返回地址么?
  • 3 回答
  • 0 關注
  • 1783 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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