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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王瀛 高级黑马   /  2013-5-22 11:32  /  2267 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一道基础题:计算1+2+...+100的和

我第一想到的是for循环语句 x遍历1~100
然后sum+=x


想问一下有没有其他不同的思路

评分

参与人数 1技术分 +1 收起 理由
殇_心。 + 1

查看全部评分

8 个回复

倒序浏览
就是这样的
int num = 0;
for(int i = 1;i <= 100;i++)
   num += i;

不用什么思路了啊。简单可行,一目了然。难道你还要折腾个算法出来
回复 使用道具 举报
本帖最后由 翟宝海 于 2013-5-22 12:04 编辑
  1. class YunSuan
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 YunSuan y = new YunSuan();
  6.                 System.out.println(y.QiuHe(100));
  7.         }
  8.         int QiuHe(int n)
  9.         {
  10.                 return n*(1+n)/2;
  11.         }
  12. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
殇_心。 + 1

查看全部评分

回复 使用道具 举报
要么就累加,要么就模拟求和公式,求和公式效率更高。其他的还真的数学大师研究了。
回复 使用道具 举报
可以用递归

  1. public class QH {
  2.    
  3.    
  4.         public static  int ys(int x)
  5.         {
  6.                 if(x>1)
  7.                         return ys(x-1)+x;
  8.                 else return 1;
  9.         }
  10.         public static void main(String[] args) {
  11.          
  12.          System.out.print(ys(100));
  13.         }

  14. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
殇_心。 + 1

查看全部评分

回复 使用道具 举报
hdsjsql 发表于 2013-5-22 12:48
可以用递归

递归是可以,也算一种思路,但是效率啥的和直接累加是没啥区别的。
回复 使用道具 举报
/**
        求1-100间的和
分析:①、首先求和要考虑到累加思想,有两个未知变量参与  要累加的数和最后的和
      ②、在累加的同事定义累加条件,首先定义一个变量,使其初始化
                        int a=1;然后定义条件语句 while(a<=100),条件满足 a++
          ③、然后再定义一个变量sum=0,如果条件sum+=a
代码如下
*/
class Add
{
        public static void main(String[] args)
        {
                int a,sum;//定义两个变量
                a=1;
                sum=0;
                while (a<=100)
                {
                        sum+=a;//这句话的意思是:sum = sum+a
                        a++;
                }
                System.out.println("sum="+sum);//这句必须写在循环语句外面,要不,每次累加的结果都会打印一遍
        }
}
//楼主,我这样写你能看懂吧?

评分

参与人数 1技术分 +1 收起 理由
殇_心。 + 1

查看全部评分

回复 使用道具 举报
好像隔了好久了,呵呵,我前段时间的基础测试题也有这道题,我总共写了3个方法来实现1+....+100.
只说思路吧,都是很简单的东西:
1、普遍的for循环叠加;
2、递归叠加;
3、因为1+...+100是递增数列,所以就用递增数列的公式来实现,O(∩_∩)O~。
回复 使用道具 举报
清水 中级黑马 2013-6-19 18:28:18
9#
高斯小学搞的的问题 还要问啊。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马