黑马程序员技术交流社区

标题: 猴子吃桃问题: [打印本页]

作者: 马鹏涛    时间: 2015-5-9 12:20
标题: 猴子吃桃问题:
猴子第一天摘掉若干个桃子,当时呢吃了一半,感觉啊还不过瘾,就又吃了一个.第二天又把剩下的吃了一半,又多吃了一个.以后每天都吃掉前一天剩下的桃子的一半加一个.到第十天的时候剩下一个桃子了.问第一天摘下多少个桃子????

想半天没想出来...........

作者: 大西洋    时间: 2015-5-9 13:33
本帖最后由 大西洋 于 2015-5-9 14:18 编辑

可以倒过来想~ 把第十天当第一天~ 吃掉一半再吃一个,反过来就是加上一个再乘以2;代码如下:
  1. public class PeachTest {
  2.         
  3.         public static void peach(){
  4.                 int eat = 1;
  5.                 int day = 9;
  6.                 System.out.println("第10天,1个水果");
  7.                 for (int i = 1; i < 10; i++) {
  8.                         eat = (eat+1)*2;
  9.                         System.out.println("第 "+day--+" 天,"+eat+"个水果");
  10.                 }
  11.                 System.out.print("\r总共摘了"+eat+"个,吃掉一半剩下"+eat/2+"个,再吃掉一个,剩下"+(eat/2-1)+"个");
  12.         }

  13.         public static void main(String[] args) {
  14.                 peach();
  15.         }
  16. }
复制代码

输出结果:
  1. 第10天,1个水果
  2. 第 9 天,4个水果
  3. 第 8 天,10个水果
  4. 第 7 天,22个水果
  5. 第 6 天,46个水果
  6. 第 5 天,94个水果
  7. 第 4 天,190个水果
  8. 第 3 天,382个水果
  9. 第 2 天,766个水果
  10. 第 1 天,1534个水果
  11. 总共摘了1534个,吃掉一半剩下767个,再吃掉一个,剩下766个
复制代码
话说,这只猴子真能吃。。。




作者: szw727    时间: 2015-5-9 14:01
这个也可以使用递归,感觉递归有些麻烦
  1.         public static int peachs(int day)
  2.         {
  3.                 int count = 1;
  4.                 for(int i=day-1; i >= 1; --i)
  5.                 {
  6.                         count = (count+1)*2;
  7.                 }
  8.                 return count;
  9.         }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2