递归

145 阅读1分钟

在js中函数自己调用自己,就称为递归。

递归函数的必要条件

递归方程以及递归结束条件,即给递归函数安排出口,否则会造成无限递归,无限递归会造成执行栈溢出,浏览器会报错。

示例代码:

 function fun(n) {
        if (n === 1) {
          return 1
        } else {
          return n + fun(n - 1)
        }
      }
      let result = fun(3)
      console.log(result) //6
      // fun(1) //1
      // fun(2) //2+1=3
      // fun(3) //3+2+1=6

利用递归实现多级遍历,以及深克隆。

//创建一个对象obj,其中的friend属性也是一个对象,friend里的student也是一个对象
var obj = {
            name: 'ls',
            age: 4,
            sex: 'nan',
            friend: {
                name: 'djw',
                age: 24,
                sex: 'nan',
                student: {
                    name: 'xlq',
                    age: 23,
                    sex: 'nan'
                }
            }
        }
 
 
function clone(obj) {
            if (typeof obj != 'object') {   //判断目标对象数据类型,不是对象则直接返回
                return obj;
            }
            var newObj = {}    //创建一个空对象,用以存放遍历后克隆的属性
            for (k in obj) {
                newObj[k] = clone(obj[k]);   //用递归实现深克隆
            }
            return newObj;
        }