欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

什么是递归,递归的实际应用

程序员文章站 2022-05-12 10:41:49
...

什么是递归

递归就是用函数来做循环,即在函数内部再调用这个函数。 returnreturn\color{#ff0000}{注意一定要有return条件,在适当的时候return出去,否则会死循环}

实际应用

入门版

案例一:自然数1到n的求和(一般不会用递归求和,这里是为了加深递归的了解)
function sum(n) {
    if (n === 1) return 1
    return n + sum(n - 1)
	//相当于 return 100 + 99 + 98 + ... + 1
}
sum(100)//5050

进阶版

案例二:递归实现对象的深拷贝
function deepClone(sourceObj) {
    if (!sourceObj || typeof sourceObj !== 'object' || Object.keys(sourceObj).length === undefined) {
        return sourceObj
    }
    const cloneObj = sourceObj instanceof Array ? [] : {}
    Object.keys(sourceObj).forEach(obj => {
        cloneObj[obj] = deepClone(sourceObj[obj])
    })
    return cloneObj
}
let newObj = deepClone(obj)//深拷贝后的新对象
\color{skyblue}{如有错误,欢迎指正}