黑马程序员技术交流社区

标题: 让技术飞,经典小例子数列的练习 ! [打印本页]

作者: 段旭东    时间: 2013-4-14 01:54
标题: 让技术飞,经典小例子数列的练习 !
本帖最后由 段旭东 于 2013-4-14 14:36 编辑

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

作者: 黄玉昆    时间: 2013-4-14 08:03
建议你可以将这个题目回复到“让技术起飞”的帖子里,地址如下:http://bbs.itheima.com/thread-43374-1-1.html
作者: 谢波    时间: 2013-4-14 08:24
本帖最后由 谢波 于 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. }
复制代码

作者: lipingan0520    时间: 2013-4-14 10:09
看看怎么样
作者: 李志敏    时间: 2013-4-14 10:20
先看看你写的
作者: 黑马-陈思源    时间: 2013-4-14 10:32
看看了 我喜欢算法
作者: 李志敏    时间: 2013-4-14 11:05
可以用递归
  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. }
复制代码

作者: 陈圳    时间: 2013-4-14 11:10
  1. public static int getNums(int n){
  2.                 if(n==0)
  3.                         return 1;
  4.                 else return (getNums(n-1)+1)*2;
  5.         }
复制代码

作者: HM刘俊    时间: 2013-4-14 13:17
看看你的结果
作者: 黄玉昆    时间: 2013-4-14 14:14
如果问题未解决,请继续追问,如果没有问题了,请将帖子分类 改为“已解决”,谢谢




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