3 回答

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)下去

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),至于會不會報錯,額,我也才在學,沒試過。

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
添加回答
舉報