闭包与递归

相同点:
1.两者都是函数的应用方式
2.在函数内部中都有调用函数

不同点:
1.闭包调用内部的函数时需要引用外部的变量或参数,而递归不需要
2.闭包自身只调用一次后便结束调用,而递归则是在满足递归条件下反复调用自身
3.闭包对内存消耗更大,更加占用内存空间,而递归在使用不当的情况下容易出现栈溢出

闭包例子

二维数组中的行转列
image

      let arr = [
        ["前端", "3人", "8-15k", "本科"],
        ["后端", "5人", "10-25k", "研究生"],
        ["UI", "2人", "9-11k", "大专"],
        ["ETL工程师", "10人", "6-12k", "大专"],
      ];
	  
      let newArr = arr[0].map((col, ind) => {
        return arr.map((row) => {
          return row[ind];
        });
      });

递归例子

菲波那契数列的第N项和: F(N) = F(N-1) + F(N-2) {N>=2}

function recursive(N) {
        if (N == 0 || N == 1) {
          return 1;
        } else {
          return recursive(N - 1) + recursive(N - 2);
        }
      }