JS高级---递归案例---递归实现: 求n个数字的和,执行过程理解

Posted jane_panyiyun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于JS高级---递归案例---递归实现: 求n个数字的和,执行过程理解的主要内容,如果未能解决你的问题,请参考以下文章

算法基础_递归_求杨辉三角第m行第n个数字

非递归和递归分别实现求第n个斐波那契数。

递归和非递归分别实现求n的阶乘

python-027-递归-求序列最大值、计算第n个调和数、转换字符到整数

大数求阶乘(防溢出)

递归优化的斐波那契数列