递归
- 递归函数;是函数中的循环;通过反复调用【自身的方法】;来返回一个结果
- 优点,代码简单;更符合人的思考;不符合运算逻辑
- 缺点;运算量大,最先执行的程序;最后输出结果。
注意事项:
- 找规律
- 找出口
- 先执行的一定被最后执行完
例:求n的阶乘
//n的阶乘
// n! = n * (n - 1) !
function mul(n) {
if (n == 1 || n == 0) {
return 1;
}
return n * mul(n - 1);
}
斐波那契数列:
//斐波那契数列
function fb(n) {
if (n == 1 || n == 2) {
return 1;
}
return fb(n - 1) + fb(n - 2);
}
递归实现深拷贝:
// 方法的作用;实现多层复杂的数据类型的深拷贝
function deepCopy(data) {
if (data.constructor.name === 'Array') { // 为数组
var arrCopy = []
for (var i = 0, len = data.length; i < len; i++) {
// arr[i]
if (data[i] instanceof Object) {// arrary object null
arrCopy.push(deepCopy(data[i]))
} else { // 基本类型
arrCopy.push(data[i])
}
}
return arrCopy;
} else { // 为对象
var objCopy = {};
for (x in data) {
if(data[x] instanceof Object){
objCopy[x] = deepCopy(data[x])
}else{ // 基本类型
objCopy[x] = data[x];
}
}
return objCopy;
}
}