存钱问题

【问题描述】

父亲准备为小龙的四年大学生活一次性储蓄一笔钱,使用整存零取的方式,控制小龙每月月初取1000元准备这个月使用。假设银行整存零取的年息为1.71%,请算出父亲至少需要存入多少钱才行。

【问题分析】

这个问题是一个典型的递推问题,分析存钱和取钱的过程,我们可以采用逆推的方法。4年48个月,每月取1000元,最后一个月正好取完。我们可以采用一个数组存放每个月剩余的钱数,那么最后一个月连本带息为1000,即第48个月数组里的值为1000。

第47个月的存折里钱为:取走的1000元生活费+下个月1000月的本金,即:

1000+第48个月的钱数/(1+0.00171/12)

依次类推可以求出第46、45、……、第1个月的钱数:

第46个月的存折里钱为:1000+第47个月的钱数/(1+0.00171/12)

第45个月的存折里钱为:1000+第46个月的钱数/(1+0.00171/12)

……

第1个月的存折里钱为:1000+第2个月的钱数/(1+0.00171/12)

通过以上的递推就可以求出最初存款的钱数。

 

【程序代码】

 1 public class CQWT   
 2 {  
 3     public static  final  double MONEYRATE=0.0171;          //存款利率  
 4     public static void main(String[] args)   
 5     {  
 6         //定义一个长度为48的数组,用来装每个月月初还剩下的存款  
 7         double money[]=new double[48];  
 8           
 9         //最后一个月月初1000元  
10         money[47]=1000;  
11         System.out.printf("48月初的剩余存款数为:%.2f\n",money[47]);  
12         //通过循环逆推出前一个月的剩余存款  
13         for(int i=47;i>0;i--)  
14         {  
15             money[i-1]=1000+money[i]/(1+MONEYRATE/12);  
16             System.out.printf("%d月初的剩余存款数为:%.2f\n",i,money[i-1]);  
17         }  
18         //算出最初要存入的钱,即第一个剩余存款数  
19         System.out.printf("\n最初要存入%.2f元。",money[0]);  
20     }  
21 } 

 

【运行结果】

posted @ 2015-04-09 16:23  #码农#  阅读(726)  评论(0编辑  收藏  举报