黑马程序员技术交流社区

标题: 一个小小的编程题 看看谁的代码最好 [打印本页]

作者: 徐大鹏    时间: 2012-11-23 13:33
标题: 一个小小的编程题 看看谁的代码最好
计算1+2-3+4-5+6-7+8..100 ...求和
下面是我的代码
  1. public class MyTest {
  2. public static void main(String[] args) {
  3. int sum = 1;
  4. for (int i = 2; i <= 100; i++)
  5. sum += (i % 2 == 0 ? i : -i);
  6. System.out.println(sum); // sum 就是结果
  7. }

  8. }
复制代码

作者: jerry2627    时间: 2012-11-23 14:11
public class d {
        public static void main(String[] args) {
                //接受一个整形数值
                int n = new Scanner(System.in).nextInt();
                int sum = 0;
                if(n%2 == 0)
                        sum = -n/2;
                else
                        sum = (1+n)/2;
                System.out.println(sum);
        }
}
效率才是王道
作者: 宫明星    时间: 2012-11-23 16:53
你们弱爆了
System.out.println(5050);
作者: 徐大鹏    时间: 2012-11-23 17:33
jerry2627 发表于 2012-11-23 14:11
public class d {
        public static void main(String[] args) {
                //接受一个整形数值

看清题 计算1+2-3+4-5+6-7+8..100 ...求和
1和2、3和4、7和8...之间是加号
2和3、4和5、8和9...之间是减号
作者: 徐大鹏    时间: 2012-11-23 17:33
宫明星 发表于 2012-11-23 16:53
你们弱爆了
System.out.println(5050);

看清题 计算1+2-3+4-5+6-7+8..100 ...求和
1和2、3和4、7和8...之间是加号
2和3、4和5、8和9...之间是减号
作者: 廖力    时间: 2012-11-23 18:56
楼主写的已经比较简洁了 是循环的方式
写一个递归的
  1. public class MainClass {

  2.         public static void main(String[] args) throws Exception {
  3.                 System.out.println(recurCall(100));
  4.         }

  5.         public static int recurCall(int i) {
  6.                 if (i == 1)
  7.                         return 1;
  8.                 return (i % 2 == 0 ? i : -i) + recurCall(--i);
  9.         }
  10. }
复制代码
因为是递归调用效率肯定不行
作者: 徐大鹏    时间: 2012-11-23 19:13
廖力 发表于 2012-11-23 18:56
楼主写的已经比较简洁了 是循环的方式
写一个递归的因为是递归调用效率肯定不行 ...

return (i % 2 == 0 ? i : -i) + recurCall(--i);
这个代码用的真好。。
作者: 徐大鹏    时间: 2012-11-23 22:07
问题已经解决




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