1.什么是递归
如果一个函数爱内部可以调用其本身,那么这个函数就是递归函数. (函数内部自己调用 自己)
注: 递归函数的作用和循环效果一样,由于递归很容易发生'栈溢出' 错误(stark overflow) ,所以必须要加退出条件.
2.利用递归求1~n的阶乘
//利用递归函数求1~n的阶乘 1 * 2 * 3 * 4 * ..n
function fn(n){
if(n===1){
return 1;
}
return n*fn(n-1)
}
console.log(fn(3)) //6
3.利用递归求斐波那契数列
// 利用递归函数求斐波那契数列(兔子序列) 1、1、2、3、5、8、13、21...
// 用户输入一个数字 n 就可以求出 这个数字对应的兔子序列值
// 我们只需要知道用户输入的n 的前面两项(n‐1 n‐2)就可以计算出n 对应的序列值
function fn(n){
if(n===1||n===2){
return 1
}
return fn(n-1)+fn(n-2)
}
console.log(fn(3))
4.利用递归遍历数据
// 我们想要做输入id号,就可以返回的数据对象
var data = [{
id: 1,
name: '家电',
goods:
[{ id: 11,
gname: '冰箱',
goods:
[{ id: 111,
gname: '海尔' },
{id: 112,
gname: '美的' },
] },
{id: 12,
gname: '洗衣机' }]
},
{id: 2,
name: '服饰'
}];
//1.利用 forEach 去遍历里面的每一个对象
function getId(json,id){
var o={};
json.forEach(function(item){
if(item.id==id){
o=item;
return o;
// 2. 我们想要得里层的数据 11 12 可以利用递归函数
// 里面应该有goods这个数组并且数组的长度不为 0
}else if(item.goods && item.goods.length > 0){
o = getID(item.goods, id);
}
})
return o;
}