黑马程序员技术交流社区
标题:
猴子吃桃问题:
[打印本页]
作者:
马鹏涛
时间:
2015-5-9 12:20
标题:
猴子吃桃问题:
猴子第一天摘掉若干个桃子,当时呢吃了一半,感觉啊还不过瘾,就又吃了一个.第二天又把剩下的吃了一半,又多吃了一个.以后每天都吃掉前一天剩下的桃子的一半加一个.到第十天的时候剩下一个桃子了.问第一天摘下多少个桃子????
想半天没想出来...........
作者:
大西洋
时间:
2015-5-9 13:33
本帖最后由 大西洋 于 2015-5-9 14:18 编辑
可以倒过来想~ 把第十天当第一天~ 吃掉一半再吃一个,反过来就是加上一个再乘以2;代码如下:
public class PeachTest {
public static void peach(){
int eat = 1;
int day = 9;
System.out.println("第10天,1个水果");
for (int i = 1; i < 10; i++) {
eat = (eat+1)*2;
System.out.println("第 "+day--+" 天,"+eat+"个水果");
}
System.out.print("\r总共摘了"+eat+"个,吃掉一半剩下"+eat/2+"个,再吃掉一个,剩下"+(eat/2-1)+"个");
}
public static void main(String[] args) {
peach();
}
}
复制代码
输出结果:
第10天,1个水果
第 9 天,4个水果
第 8 天,10个水果
第 7 天,22个水果
第 6 天,46个水果
第 5 天,94个水果
第 4 天,190个水果
第 3 天,382个水果
第 2 天,766个水果
第 1 天,1534个水果
总共摘了1534个,吃掉一半剩下767个,再吃掉一个,剩下766个
复制代码
话说,这只猴子真能吃。。。
作者:
szw727
时间:
2015-5-9 14:01
这个也可以使用递归,感觉递归有些麻烦
public static int peachs(int day)
{
int count = 1;
for(int i=day-1; i >= 1; --i)
{
count = (count+1)*2;
}
return count;
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2