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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 徐大鹏 中级黑马   /  2012-11-23 13:33  /  1809 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

计算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. }
复制代码

7 个回复

倒序浏览
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);
        }
}
效率才是王道
回复 使用道具 举报
你们弱爆了
System.out.println(5050);
回复 使用道具 举报
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 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...之间是减号
回复 使用道具 举报
楼主写的已经比较简洁了 是循环的方式
写一个递归的
  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 18:56
楼主写的已经比较简洁了 是循环的方式
写一个递归的因为是递归调用效率肯定不行 ...

return (i % 2 == 0 ? i : -i) + recurCall(--i);
这个代码用的真好。。
回复 使用道具 举报
问题已经解决
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马