递归
·
Yin灏
什么是递归?
如果一个函数在内部可以调用其本身,那么这个函数就是递归函数。
递归必须有退出条件。
递归求解数学题
- 求阶乘
function fn(n) {
if(n == 1) return 1;
return n * fn(n - 1);
}
console.log(fn(4));
- 求斐波那契数列
function fb(n) {
if(n == 1 || n == 2) return 1;
return fb(n - 1) + fb(n - 2);
}
console.log(fb(4));
利用递归遍历数据
var data = [{
id: 1,
name: '家电',
goods: [{
id: 11,
gname: '冰箱'
}, {
id: 12,
gname: '洗衣机'
}]
}, {
id: 2,
name: '服饰'
}];
function getId(json, id) {
json.forEach(function(item) {
if (item.id == id) {
console.log(item)
} else if(item.goods && item.goods.length > 0) {
getId(item.goods, id);
}
})
}
// console.log(getId(data, 1));
console.log(getId(data, 12));
var data = [{
id: 1,
name: '家电',
goods: [{
id: 11,
gname: '冰箱'
}, {
id: 12,
gname: '洗衣机'
}]
}, {
id: 2,
name: '服饰'
}];
function getId(json, id) {
var o = {};
json.forEach(function(item) {
if (item.id == id) {
o = item;
return item;
} else if(item.goods && item.goods.length > 0) {
o = getId(item.goods, id);
}
})
return o;
}
console.log(getId(data, 12));