递归的原理与实际开发运用\递归函数求斐波那契数列\递归实现深拷贝

郭浪 Lv3

递归的原理:

​ 也就是JS执行函数时会进入另外一个空间执行函数,这个空间成为调用栈。若一个函数里面嵌套自己,最终会形成多个调用栈,一层层递进运算再回退运算称为递归运算

​ 说白了理解递归就是函数自己调用自己

数组转树:

1
2
3
4
5
6
7
8
9
10
11
const arrToTree = (arr, id=0) => {
const tree = []
arr.forEach(e => {
if (e.pid === id) {
const childrenArr = arrToTree(arr, e.id)
if (childrenArr.length) e.children = childrenArr
tree.push(e)
}
})
return tree
}

递归实现深拷贝:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
const cloneDeep = oldObj => {
let newObj = Array.isArray(oldObj) ? [] : {}
for (const k in oldObj) {
if (typeof oldObj[k] === 'object') {
newObj[k] = cloneDeep(oldObj[k])
} else {
newObj[k] = oldObj[k]
}
}
return newObj
}

const oldObj = {
a: 1,
b: false,
c: {
aaa: 1,
bbb: 2
}
}

递归函数求斐波那契数列:

​ 斐波那契数列是 1,1,2,3,5,8,13…..就是你要求的当前项为前两项相加,第一项和第二项为1

斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”

1
2
3
4
5
6
7
function fn(n) {
if(n == 1 || n == 2) {
return 1
}
return fn(n -1) + fn(n - 2)
}
console.log(fn(8)) //21
  • 标题: 递归的原理与实际开发运用\递归函数求斐波那契数列\递归实现深拷贝
  • 作者: 郭浪
  • 创建于: 2023-01-28 14:20:50
  • 更新于: 2023-08-05 10:37:12
  • 链接: https://redefine.ohevan.com/2023/01/28/递归的原理与实际开发运用-递归函数求斐波那契数列-递归实现深拷贝/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
此页目录
递归的原理与实际开发运用\递归函数求斐波那契数列\递归实现深拷贝