算法初级_Question7_最佳存款方案(java实现)

这篇文章讲述的是算法初级部分的最佳存款方案问题的java实现,参考的书籍为清华大学出版社出版,贾蓓等编著的《c语言趣味编程1000例》,如有错误或者不当之处,还望各位大神批评指正。

问题描述

假设银行一年整存零取的月息为0.63%,现在某人手里有一笔钱,打算在今后的5年中每年年底取出1000元,到第五年正好取完,问他存钱时存入了多少钱。

算法分析

已知第五年正好取完,那么,立即推:
(1+12*0.0063)*A = 1000 ==> A = 1000/(1+12*0.0063) (A为第四年年初剩余存款)
以此类推:第四年初剩余存款为 (A+1000)/(1+12*0.0063)
第三年初剩余存款为 (第四年年初存款+1000)/(1+12*0.0063)
……….
第一年初剩余存款为(第二年年初存款+1000)/(1+12*0.0063)
需要一个for循环,循环四次。

代码实现

public class Q7_BestSave {
    /**
     * 问题描述:假设银行一年整存零取的月息为0.63%,现在某人手里有一笔钱,打算
     *           在今后的5年中每年年底取出1000元,到第五年正好取完,问他存钱
     *           时存入了多少钱。
     * 
     * 算法分析:已知第五年正好取完,那么,立即推:
     *          (1+12*0.0063)*A = 1000 ==> A = 1000/(1+12*0.0063) (A为第四年年初剩余存款)
     *          以此类推:第四年初剩余存款为  (A+1000)/(1+12*0.0063)
     *                      第三年初剩余存款为 (第四年年初存款+1000)/(1+12*0.0063)
     *                      ..........
     *                      第一年初剩余存款为(第二年年初存款+1000)/(1+12*0.0063)
     *          需要一个for循环,循环四次。
     * 
     */
    public static void main(String[] args) {
        double A = 0 ;              //第五年底剩余0
        for(int i=0 ; i<5 ; i++){   //倒推出第一年年初剩余(存入)
            A = (A+1000)/(1+12*0.0063) ;
        }
        System.out.println("某人向银行存入的金额为:"+A);
    }
}

样例输出

某人向银行存入的金额为:4039.444465119001
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值