递归最终的价格(两个不同的价格字段对比,按递归逻辑得到数据)------集合循环递归

本文深入探讨了一种集合循环递归算法的实现,通过递归调用计算最终价格,展示了如何处理空集合及异常情况,确保算法稳定运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   public class Part {
	   private String nplatPrice;
	   private String estiPrice;
	   //get..和set..
	   ...
   }

再下面写一个集合循环递归方法,然后调用。

    
    public class partServiceImpl implements partService {
    	public String importPrice(List<Part> partList,String nplatPrice) throws Exception {
    		String quotedPrice ="";
			Double dNplatPrice= Double.parseDouble(nplatPrice);
    		Part part = new Part();
    		//递归调用最终的价格
    		if(partList.isEmpty()) {
    			log.info("partList数据为空!");
    			try{
    				part.setNplatPrice(dNplatPrice);
    			}catch (Exception e) {
    				part.setNplatPrice(new BigDecimal(0).setScale(0, BigDecimal.ROUND_DOWN).doubleValue());
    			}
    		} else {
    			int length = partList.size();
    			Double price = price(length, dNplatPrice, partList);
    			nplatPrice = new BigDecimal(price).setScale(0, BigDecimal.ROUND_DOWN).toString();
    			log.info("最终的上报数据为:"+nplatPrice);
    			try{
    				part.setNplatPrice(price);
    			}catch (Exception e) {
    				part.setNplatPrice(new BigDecimal(0).setScale(0, BigDecimal.ROUND_DOWN).doubleValue());
    			}
    		}
    		
    		quotedPrice = (new BigDecimal(part.getNplatPrice()).setScale(0, BigDecimal.ROUND_DOWN)).toString();
    		return quotedPrice;
    	}
     
    	/**
    	 * 递归最终的价----集合循环递归
    	 * @param n 集合为个数
    	 * @param nplatPrice 为当前的价
    	 * @param partList  前面顺序储存的集合数据
    	 * @return
    	 */
    	public Double price(int n,Double nplatPrice,List<Part> partList){
            if(n>=1){
            	Double oldNplatPrice = partList.get(n-1).getNplatPrice(); 	//调用的配件表的nplat_price数据;
            	Double oldEstiPrice = partList.get(n-1).getEstiPrice();		//调用的配件表的esti_price数据;
            	if(oldEstiPrice==null) {
            		oldEstiPrice = new BigDecimal(0).setScale(0, BigDecimal.ROUND_DOWN).doubleValue();
            	}
    			if(nplatPrice-oldEstiPrice==0){
    				return price(n-1,oldNplatPrice,partList);
    			}else{
    				return nplatPrice;
    			}
            }else{
                return nplatPrice;
            }
        }
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值