首页 > 算法 > 逆推算法demo

逆推算法demo

作者:bin

逆推算法
一个实例,不能用明推时,可以考虑用逆推的方式

 
 /**
     * 逆推算法
     * 母亲为儿子准备大学4年的生活的存款,方式是「整存零取」,
     * 母亲一次全存进去,儿子每个月定时取1000快。
     * 假设银行利息年华是3%,那么要存多少钱进去,才够儿子每个月取着用。
     * 
     * 思路:可以确定最后一个月钱为1000
     * 假设上个月的钱是A,那么 1000 = A + (A * 0.03/12) - 1000
     * 即 [剩余] = [上月剩余] + (上月剩余 * 利息) - 每月取的
     */
    @Test
    public void testHexToBase64s(){
        Integer totalMonth = 47; //月
        Double rate = 3.00; //利率
        Double rates = (rate * 0.01 / 12) + 1; //被除数
        BigDecimal b1 = new BigDecimal(rates.toString());
        Double last = 1000.00; //每个月的钱

        List<Double> months = Lists.newArrayList();
        months.add(last);

        for (int i = 0; i < totalMonth; i++) {
            BigDecimal b2 = new BigDecimal(last);
            //获取上个月的钱
            BigDecimal beforeMonth = b2.divide(b1,2, BigDecimal.ROUND_HALF_UP); 
            last =  beforeMonth.doubleValue() + 1000L;
            months.add(last);
        }

        System.out.println(months);
    }

您必须 [ 登录 ] 才能发表留言!