求1~100的和

来源:互联网 发布:观察者手机控制软件 编辑:程序博客网 时间:2024/05/22 23:59

第一种普通的解法:

public int getSum(int n) {    int sum = 0;    for(int i=0;i<=n;i++) {        sum += i;    }    return sum;}System.out.println("1~100的和为:" + getSum(100));

上面的程序虽然可以计算出正确的结果,但是使用了for循环进行累加,这样执行的步骤多,效率低下,我们来看看第二种解法:

据说18世纪生于德国小村庄的高斯,上小学的一天,课堂很乱,老师非常生气,于是老师在放学时就要求每个学生都计算1+2+3+…+100的结果,谁先做出来谁就可以回家了。

高斯很快就得出了答案,是5050.老师非常惊讶,问你是怎么算的?

高斯解释道:

    sum   =  1  + 2   + 3   + ... + 99  + 100    sum   = 100 + 99  + 98  + ... + 2   + 1    2*sum = 101 + 101 + 100 + ... + 101 + 101    2*sum = 101 * 100    sum = 5050

太机智了,那么我们用程序来实现以下吧;

public int getSum(int n) {    int sum = 0;    int n = 100;    sum = (1 + n) * n / 2;    return sum;}

神童就是神通,他用的方法相当于另一种等差数列的算法,不仅仅可以用于1加到100,就是加到一千、一万、一亿也是可以的。并且非常容易计算,但是使用第一种方式来计算的话计算机就要循环一千、一万、一亿次的加法运算,效率的差别非常明显啊。

0 0
原创粉丝点击