二露
2017-05-16 17:00:00
?function a(n){ if(n>0){ return a(n-1)+n; } return 0;? }? var num=a(5);? console.log(num);我想知道每一步是如何運行的,以及為什么為什么要return 0以及return a(n-1)+n;
1 回答
已采納

風箏_0010
TA貢獻45條經驗 獲得超15個贊
????這個用if語句規(guī)定了傳入的n不能小于1,如果小于1就直接返回0。
????如果傳入n的是大于1的值,那就return a(n-1)+n;
????這個return的是a(n-1) + n的值,所以相當于把n-1當參數傳給a再執(zhí)行一次,并把執(zhí)行的結果和n相加,如果n-1還是大于0,那就return a(n-2) + (n-1),這個時候還會把n-2當參數傳給a執(zhí)行一次,并把執(zhí)行的結果和n-1相加,就這樣一直遞歸,直到n小于1的時候不滿足這個if的條件,會返回0,從函數角度來看就是:
f(n)?=?f(n-1)?+?n; f(n-1)?=?f(n-2)?+?n-1; ...... f(1)?=?f(0)?+?1;
????所以這樣看就是:
f(n)?=?f(0)?+?1?+?2?+?3?+?4......?+?n; f(0)?=?0;
????你這個里面可以看做f(5) = 0+1+2+3+4+5 = 15;
添加回答
舉報
0/150
提交
取消