灏天阁

递归

· Yin灏

什么是递归?

如果一个函数在内部可以调用其本身,那么这个函数就是递归函数。

递归必须有退出条件。

递归求解数学题

  1. 求阶乘
function fn(n) {
	if(n == 1) return 1;
	return n * fn(n - 1);
}
console.log(fn(4));
  1. 求斐波那契数列
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));

- Book Lists -