递归函数
所谓的 递归函数 就是在函数体内调用本函数。使用递归函数一定要注意,处理不当就会进入死循环,造成堆栈溢出。
- 在函数内部直接或间接引用自身。
- 每个递归函数里必定会有终止条件。
1. 求阶乘
function factorial(c){
if(c == 0){
return 1;
}if(c == 1){
return c;
}else{
return c * factorial(c-1);
}
}
alert(factorial(0)); //1
alert(factorial(1)); //1
alert(factorial(5)); //120
2. 多维数组遍历
var new_array=[];
function _getChilds(data){
if(typeof data != "object" || data == null){
new_array.push(data);
}else{
getChilds(data);
}
}
function getChilds(data){
for(var i in data){
_getChilds(data[i]);
}
}
var json = {
"aa" : {"l" : 1,"m" : 3},
"bb" : 1,
"cc" : "abc",
"dd" : true,
"ee" : null
}
getChilds(json)
console.log(new_array) // [1,3,1,"abc",true,null]
通过 递归遍历 可以实现深拷贝。