递归函数:自己调用自己的函数
递归函数必须要有结束语句,否则就会死递归。
var num = 0; function fn() { console.log('ok~~~'); if (num == 5) { return } else { num++ } fn(); } fn();
递归函数应用案例1:求n的阶乘
//求n的阶乘。 //3! = 1*2*3 ==== 3 * 2的阶乘 //4! = 1*2*3*4 === 4 * 3的阶乘 //n! = n * (n-1的阶乘) function jiecheng(n) { if (n === 1) { return 1; } return n * jiecheng(n - 1) } console.log(jiecheng(5));
递归函数应用案例2:求斐波那契数列
// 利用递归函数求斐波那契数列(兔子序列) 1、1、2、3、5、8、13、21... // 规律: // 第1个数是1,第2个数是1, // 第3个数是第1个数和第2个数的和。。。。。。 // 第n个数, (n-1的值) + (n-2的值) // 求第n个数的值? function fb(n) { if (n === 1 || n === 2) { return 1; } return fb(n - 1) + fb(n - 2) } console.log(fb(5));
递归函数应用案例3:遍历数组
var data = [{ id: 1, gname: '家电', goods: [{ id: 11, gname: '冰箱', goods: [ { id: 111, gname: '海尔冰箱' }, { id: 222, gname: '海信冰箱' } ] }, { id: 12, gname: '洗衣机' }] }, { id: 2, gname: '服饰' }]; function getId(arr, id) { // 遍历数组 var o = {} arr.forEach(function (item) { // console.log(item.id); // 如果找到则打印 if (item.id === id) { o = item; } else if (item.goods && item.goods.length > 0) { // 遍历item.goods下面的商品 o = getId(item.goods, id) } }) // 返回o return o; } var result = getId(data, 222) console.log(result);
还没有评论,来说两句吧...