递归函数

281 阅读1分钟

我学习递归函数

递归函数是什么

如果一个函数在内部可以调用其本身,那么这个函数就是递归函数,递归函数的作用和循环效果一样。

递归函数的栈溢出错误

image.png image.png

image.png 递归函数很容易发生“栈溢出”错误,所以必须要加退出条件return

如何使用递归

例:我们要打印六次num

image.png

image.png

利用递归函数求1~n的阶乘 12345...n

image.png

第一次 image.png

第二次

image.png

第三次

image.png

递归函数求斐波那契数列

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

image.png

image.png

递归函数遍历数组对象判断是否包含某个id如果有就就返回它的当前项

image.png

image.png

深拷贝和浅拷贝

浅拷贝

image.png

image.png

注意点:

image.png

image.png

上面的代码看似正确的,但会存在一个很严重的bug,当我要改o中goods里面的值时,我们看看会发生什么。

image.png

image.png

我们可以看到我改的是o中goods里的name的值它把obj中goods里的name值也修改了,这就是因为我用这种方法浅拷贝obj中的键值中的对象是拷贝它存储在栈中的指向堆中的地址.因为浅拷贝只拷贝一层。

ES6浅拷贝利用Object对象中的方法assign(拷贝给谁,拷贝的对象) image.png

image.png

深拷贝

image.png

image.png