A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 抱0抱 中级黑马   /  2014-6-12 22:19  /  2013 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  这几天在上基础班,学习C的内容,开始的习题做着感觉还不错,都能做的出来,不过今天学循环了,感觉有点小难呀!这里有一个问题请教大神们!
  假设银行当年整存领取五年期的年利息为2.5%,现在某人手里有一笔钱,预计在今后的五年当中每年年底取出1000,到第五年的时候刚好取完,计算在最开始存钱的时候要存多少钱?
用C语言编写
因为平时就不太会算利率之类的题,所以遇到这样的就一点思路没有啊!求抱大腿!

6 个回复

倒序浏览
木有人回答啊、、、、
回复 使用道具 举报
我师妹说这道题用递归做比较简单,我相信我师妹
回复 使用道具 举报
剑气近 发表于 2014-6-15 21:04
我师妹说这道题用递归做比较简单,我相信我师妹

这几天正在学递归呢,很坑呀,不太懂呀!有没有详细的解决方案呀!
回复 使用道具 举报
本帖最后由 freshnboy 于 2016-3-27 14:45 编辑
  1.         public static void main(String[] args) {
  2.                 double x = 0;// 假设需要存入x元
  3.                 int year = 5;// 五年取完
  4.                 x = get(year);
  5.                 System.out.println(x);
  6.         }

  7.         private static double get(int year) {
  8.                 double result = 1000;
  9.                 if (year > 1)
  10.                         result = get(year - 1) / 1.025 + 1000;
  11.                 return result;
  12.         }
复制代码
回复 使用道具 举报
很简单的,回忆一下高中数学的内容。。。
解题分析:假设第n年取钱之前的钱数为x,那么第五年的x=1000,第四年的x=1000/1.025+1000
用数学表达出来就是:f(n)=f(n-1)/1.025+1000。
已知f(5)=1000,求f(1)。
编程思路:
用递归去解决,那么好,把年数作为传入参数,设x=get(year),初始值year为5.
递减到1时return 1000;否则return get(year-1)/1.025+1000;
代码就如上图所示,最终结果为:4761.974208009808元(double数)
回复 使用道具 举报
baby14 金牌黑马 2018-7-31 08:05:04
7#
很好很好
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马