递归案例
// 利用递归函数求 1-n 的阶乘 1 * 2 * 3 * 4 *5 ...n
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));
// 输入 id 返回对应的数据对象
var data = [{
id: 1,
name: '家电',
goods: [{
id: 11,
gname: '冰箱'
}, {
id: 12,
gname: '洗衣机'
}]
}, {
id: 2,
name: '服饰'
}]
// 输入 id 返回对应的数据对象
// 1 利用foreach 遍历对象
function getID(json, id) {
var o = {};
json.forEach(function(item) {
// console.log(item); // 2 个数据元素
if (item.id == id) {
// console.log(item);
o = item;
return item;
// 得到里层的数据 可以利用递归函数来做
// 里面数据 应该有goods 数据 并且长度不能为0
} else if (item.goods && item.goods.length > 0) {
o = getID(item.goods, id);
}
});
return o;
}
console.log(getID(data, 1));
console.log(getID(data, 2));
console.log(getID(data, 11));
console.log(getID(data, 12));