递推算法6——逆推法之存取问题
程序员文章站
2024-03-16 11:20:16
...
该存多少钱
小明打算为自己的三年研究生生活准备了一笔学费,一次性的存入银行,保证每年年底取出1000元,到第3年学习结束时刚刚好取完。假设银行一年整存零取得月息为0.31%,请问需存入银行多少钱?
【分析】
这也是已知结果求已知条件的问题,同样采用逆推法。如果第3年年底连本带息取出1000元,则需先求出第3年年初的银行存款:
假设第3年年初的银行存款为x元,则有x×(1+0.0031×12)=1000,故x=1000/(1+0.0031×12),即第3年年初的银行存款=1000/(1+0.0031×12)。同理可以得到第2年年初的银行存款,第1年年初的银行存款,计算如下:
第2年年初的银行存款=(第3年年初的银行存款+1000)/(1+0.0031×12);
第1年年初的银行存款=(第2年年初的银行存款+1000)/(1+0.0031×12);
第1年年初的银行存款即为所求结果。
code:
#include<stdio.h>
void main()
{
int i;
float total = 0.0;
for (i = 0; i < 3; i++)
total = (total + 1000) / (1 + 0.0031 * 12);
printf("第一次必须向银行存入%.2f元\n", total);
getchar();
}