什么是递归,递归的实际应用
程序员文章站
2022-05-12 10:41:49
...
什么是递归
递归就是用函数来做循环,即在函数内部再调用这个函数。
实际应用
入门版
案例一:自然数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)//深拷贝后的新对象