zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    进程通信
    python模块成像库pillow
    python模块IO
    python模块StringIO和BytesIO
    DJango重写用户模型
    DJango模型Meta选项详解
    DJango中事务的使用
    批量删除文件
    批量修改文件名字或后缀
    自定义中间件实现插拔设计
  • 原文地址:https://www.cnblogs.com/jane-panyiyun/p/12185899.html
Copyright © 2011-2022 走看看