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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 段旭东 高级黑马   /  2013-4-14 01:54  /  2241 人查看  /  9 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 段旭东 于 2013-4-14 14:36 编辑

练习java语言的经典小例子。
可以用很多方法,结果不重要 最主要的是算法,思想!
题目:有一堆苹果,你第一天吃掉一半加一个,第二天又吃掉剩下的一半加一个,到第十三天吃了剩下的最后一个苹果,问:最初有几个苹果?
PS:吃掉的是一堆苹果的一半哦!第二天是剩下半堆的一半哦!不是一个苹果分开吃。。。。
结果:做出的的结果数量可能有点巨大!各位不要惊讶!
以下有一份我的答案,支持一下回复后可以看到!求最简洁算法,交流一下答案!{:soso_e144:}
游客,如果您要查看本帖隐藏内容请回复

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

9 个回复

倒序浏览
建议你可以将这个题目回复到“让技术起飞”的帖子里,地址如下:http://bbs.itheima.com/thread-43374-1-1.html
回复 使用道具 举报
本帖最后由 谢波 于 2013-4-14 08:26 编辑
  1. class Demo3
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int sum = 1;
  6.                 for(int x=0;x<12;x++)
  7.                 {
  8.                         sum = (sum + 1) * 2;
  9.                 }
  10.                 System.out.println(sum);
  11.         }
  12. }
复制代码
回复 使用道具 举报
看看怎么样
回复 使用道具 举报
先看看你写的
回复 使用道具 举报
看看了 我喜欢算法
回复 使用道具 举报
可以用递归
  1. public class Aapple {
  2.         public static void main(String[] args) {
  3.                 System.out.println(num(13));
  4.         }
  5.         //倒过来考虑 最后一天为第一天
  6.         public static int num(int day) {
  7.                 if(day>1){
  8.                         return 2*(num(day-1)+1);
  9.                 }else{
  10.                         return day;
  11.                 }
  12.         }
  13. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
陈圳 高级黑马 2013-4-14 11:10:05
8#
  1. public static int getNums(int n){
  2.                 if(n==0)
  3.                         return 1;
  4.                 else return (getNums(n-1)+1)*2;
  5.         }
复制代码
回复 使用道具 举报
看看你的结果
回复 使用道具 举报
如果问题未解决,请继续追问,如果没有问题了,请将帖子分类 改为“已解决”,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马