遞歸實現: 求n個數字的和
求n個數字的和, 5 計算1 + 2 + 3 + 4 + 5 var sum = 0; for (var i = 1; i <= 5; i++) { sum += i; } console.log(sum);
遞歸實現:求n個數字的和 n=5---> 5+4+3+2+1
// //函數的聲明 function getSum(x) { if (x == 1) { return 1; } return x + getSum(x - 1); } //函數的調用 console.log(getSum(5));
畫圖理解:
執行過程:
代碼執行getSum(5)--->進入函數, 此時的x是5, 執行的是5+getSum(4), 此時代碼等待
此時5+getSum(4), 代碼先不進行計算, 先執行getSum(4), 進入函數, 執行的是4+getSum(3), 等待, 先執行的是getSum(3), 進入函數, 執行3+getSum(2), 等待,
先執行getSum(2), 進入函數, 執行 2+getSum(1); 等待, 先執行getSum(1), 執行的是x==1的判斷,return 1,
所以, 此時getSum(1)的結果是1, 開始向外走出去
2+getSum(1) 此時的結果是:2+1
執行:
getSum(2)---->2+1
3+getSum(2) 此時的結果是3+2+1
4+getSum(3) 此時的結果是4+3+2+1
5+getSum(4) 此時的結果是5+4+3+2+1
結果:15