• 始终先确定函数的基本情况。
  • 将参数传递给将立即到达基本情况的函数。
  • 确定至少将执行递归函数调用一次的参数。

    // 阶乘
    function digui(n) {

    if (n === 1) {
      return 1;
    } else {
      return n * digui(n - 1);
    }

    }
    console.log(digui(5)); // 输出:120

    // 数组扁平化
    let arr = [1, 2, [3, 4, [5]]]
    function flatten(arr) {

      //定义空数组接值
      let result = []
      //遍历数组
      for (let i = 0; i < arr.length; i++) {
          if (Array.isArray(arr[i])) {
              // flatten 就是扁平化,递归
              result = result.concat(flatten(arr[i]))  // [1, 2, 3, 4, 5]
          } else {
             //往数组里面加值
              result.push(arr[i])
          }
      }
      return result

    }

    console.log(flatten(arr))

    // 斐波那契数列
    const fibonacci = n => {

    let num = new Array(n).fill(0); // 初始化数组,并设置初始值
    num[1] = 1; // 设置第二个元素的值 推导第3个元素
    for (let i = 2; i <= n - 1; i++) {
      num[i] = num[i - 2] + num[i - 1]; // 遍历逐步推导元素值 数组完全符合数列不用进行判断等 运行效率最高。
    }
    return num[n - 1]; // 数组是从0开始计算 所以要减1

    };

最后修改:2023 年 11 月 18 日
如果觉得我的文章对你有用,请随意赞赏