JavaScript之递归及其相关案例

JavaScript之递归及其相关案例

  1. 什么是递归?
    递归:一个函数在内部可以调用其本身
var num = 1;

function fn() {
      console.log('我爱写代码');
      if (num == 6) {
            return;
      } else {
            num++;
      }
      fn();
}
fn();  //'我爱写代码'*6

由于递归很容易发生栈溢出错误,所以必须要加退出条件return

  1. 案例:利用递归遍历数据
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) {
                o = item;
                if (item.id == id) {
                    //2.得到里层里id对应的数据(递归)
                } else if (item.goods && item.goods.length > 0) {
                    getId(item.goods, id);
                }

            });
            return o;
}
console.log(getId(data, 12));
  1. 案例:利用递归求解数学题
//1.求阶乘
        function fn(n) {
            if (n == 1) {
                return 1;
            } else {
                return n * fn(n - 1);
            }
        }
        var num1 = fn(4);
        console.log(num1);
        //2.求斐波那契数列
        function fn1(n) {
            if (n == 1 || n == 2) {
                return 1;
            }
            return fn1(n - 1) + fn1(n - 2);
        }
        var money1 = fn1(5);
        console.log(money1);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值