第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

關(guān)于Js函數(shù)調(diào)用過程的一道題,求大神賜教

關(guān)于Js函數(shù)調(diào)用過程的一道題,求大神賜教

榎目貴音 2016-04-03 22:51:22
function?abc(num1){ ???if(num1>3){ ???????abc(--num1); } document.writeln(num1);? }??? abc(5);為什么最后輸出出來是3 3 4?而下面這個代碼為什么會出錯?function?abc(num1){ ???if(num1>3){ ???????abc(num1--); } document.writeln(num1);? }??? abc(5);求大神解惑,小白感激不盡
查看完整描述

3 回答

已采納
?
Nasei

TA貢獻2條經(jīng)驗 獲得超0個贊


為啥輸出 3 3 4:最開始num1的值是5,判斷>3成立,--num1的意思是調(diào)用前先自減,所以首先自減變成4,然后調(diào)用abc(4),同理adc(4)里num1變成3了,然后調(diào)用abc(3),abc(3)里直接輸出3 ,回到abc(4),輸出3,回到abc(5),輸出4。

下面那段代碼語法上在我看來沒有錯,只不過abc(num1--)這樣寫的話就變成死循環(huán)了,num1--的意思是先調(diào)用再自減,這樣的話就會一直在調(diào)用adc(5),一直循環(huán)下去

查看完整回答
反對 回復 2016-04-04
  • qq_騎豬看夕陽_3
    qq_騎豬看夕陽_3
    function abc(num1){ document.writeln(num1); if(num1>3){ document.writeln(num1+"-上-"); //遞歸調(diào)用 abc(--num1); document.writeln(num1+"-下-"); } document.writeln(num1+"++"); } 為什么運行流程輸出如下結(jié)果: 5 5-上- 4 4-上- 3 3++ 3-下- 3++ 4-下- 4++
  • Nasei
    Nasei
    你這段代碼和這個問題的一樣的呀,一步步走下來就是這樣的,我這么和你說吧,首先num1的值是5,所以document.writeln(num1);會輸出一個5,然后作判斷大于3成立,這時候document.writeln(num1+"-上-");就會輸出5-上-,然后走到abc(--num1);這時候num1先自減為4,然后調(diào)用abc(4);調(diào)用完abc(4)之后,執(zhí)行document.writeln(num1+"-下-");document.writeln(num1+"++");分別輸出4-下- 4++,所以輸出其實就是:5 5-上- [abc(4)的輸出] 4-下- 4++,abc(4)的輸出和abc(5)邏輯上一模一樣的,可以類比出來abc(4)的輸出:4 4-上- [abc(3)的輸出] 3-下- 3++,這樣abc(5)的輸出就是:5 5-上- 4 4-上- [abc(3)的輸出] 3-下- 3++ 4-下- 4++,abc(3)輸出就顯而易見了,就是3 3++,全部合起來就是5 5-上- 4 4-上- 3 3++ 3-下- 3++ 4-下- 4++
?
深山小童

TA貢獻20條經(jīng)驗 獲得超10個贊

遞歸:函數(shù)里調(diào)用函數(shù)本身。先一層層的調(diào)用函數(shù),直到停止調(diào)用,再一層層的返回執(zhí)行先前未執(zhí)行完的內(nèi)容。

使用遞歸一定要有條件來阻止程序死循環(huán)。

前置遞減:--i是語句求值之前i的值先減1,即先執(zhí)行i= i-1,再(--i)=i; ?例如i = 2,那么i = i-1 =1, ?(--i) = i = 1。

后置遞減:i--是語句求值之后i的值才減1,即先執(zhí)行(i--)=i,再i= i-1; ?例如i = 2,那么(i--) = i = 2, i= i-1 = 1。

所以第二個例子實際上一直在調(diào)用abc(5),無法判斷停止調(diào)用,陷入死循環(huán),至于會不會報錯,額,我也才在學,沒試過。

查看完整回答
反對 回復 2016-04-12
?
xufeng123456

TA貢獻4條經(jīng)驗 獲得超2個贊

建議熟悉一下遞歸函數(shù)的原理就會很好理解了;

調(diào)用第一個函數(shù)abc(5)【注意,函數(shù)體中"document.write(4)"暫時不會去執(zhí)行,但是等if()里昨晚就會來執(zhí)行】;時,就會進入函數(shù)體執(zhí)行abc(4)【同上面的注意,document,write(3)】--->執(zhí)行abc(3)【這時3不大于3,就不會進入if(),首次執(zhí)行document.write(3)】---->回到abc(4)中(由于--num),document(3);在回到adb(5),打印4;最終打印3,3,4

查看完整回答
反對 回復 2016-04-04
  • 3 回答
  • 0 關(guān)注
  • 1566 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號