递归是什么?递归求和、求阶乘、多维数组转一维数组、斐波那契数列

104 阅读1分钟

什么是递归

函数内部自己调用自己就是递归 通俗一点就是大事化小,小事化了。

递归求和

      let arr = [100, 200, 300, [400, 500, [49, 59, 80, [232, 5435, 77]]]];
      function fn(params) {
        let sum = null;
        params.forEach((item) => {
          if (Array.isArray(item)) {
            sum += fn(item);
          } else {
            sum += item;
          }
        });
        return sum;
      }

多维数组转一维数组

      let newArr = [];
      function one(params) {
        params.forEach((item) => {
          if (Array.isArray(item)) {
            one(item);
          } else {
            newArr.push(item);
          }
        });
        return newArr;
      }

阶乘

      1*2*3*4*5*6*7*8
      function get(n) {
        if (n == 1) return 1;
        return n *= get(n - 1);
      }
      console.log(get(8));

阶和

    1+2+3+4+5
      function get(n) {
        if (n == 1) return 1;
        return n + get(n - 1);
      }
      console.log(get(5));

斐波那契数列

lQLPJxd2JszSf4TNAvzNBkWw8jbw0g_1bMED6SjNjQBZAA_1605_764.png

      function get(n) {
        if (n == 1) return 1;
        return n *= get(n - 1);
      }
      console.log(get(8));