JS高級---遞歸案例---遞歸實現: 求n個數字的和,執行過程理解


遞歸實現: 求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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM