递归使用尽量做好次数限制,避免死循环发生,然后递归的参数传进来,递归重要的参数有助于提高效率。

该代码段展示了如何在递归计算中设置次数限制以避免死循环,同时通过传递关键参数来提高效率。在找不到Map中的值时,会尝试从InvestmentCalculationChildResp对象中获取数据,并进行递归调用,递归次数限制为10次。如果达到限制则停止递归,确保了程序的稳定性。
摘要由CSDN通过智能技术生成

递归使用尽量做好次数限制,避免死循环发生,然后递归的参数传进来,递归重要的参数有助于提高效率。

以下代码

 private String getValueCustomFormula(Map<String, CollectionShopAttr> shopAttrMap,
                                         Map<String, InvestmentCalculationChildResp> childRespMap, String dataKey,
                                         Integer size, String turnoverBeforeDiscount) {

        CollectionShopAttr shopAttr = shopAttrMap.get(dataKey);
        String attrValue = "0";
        if (null != shopAttr) {
            if (null != shopAttr.getAttrValue()) {
                attrValue = shopAttr.getAttrValue();
            }
        } else {
            //投资测算标准的其他字段
            InvestmentCalculationChildResp childResp = childRespMap.get(dataKey);
            if (null != childResp) {
                log.info("childResp: {}", childResp);
                //不能自己调自己
                if (Objects.equals(dataKey, childResp.getDataValue())) {
                    return attrValue;
                }
                //递归出现了10次,将不在进行
                ++size;
                if (size < 10) {
                    //递归
                    String paybackScoreResult =
                            getPaybackScoreResult(shopAttrMap, childRespMap, childResp.getDataValue(), size,
                                    turnoverBeforeDiscount);
                    log.info("paybackScoreResult: {}", paybackScoreResult);
                    if (StringUtils.isNotEmpty(paybackScoreResult)) {
                        attrValue = paybackScoreResult;
                    }
                }
            }

        }
        return attrValue;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习微站公众平台

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值