TeMoon 发表于 2021-1-5 10:47

对常用从1+N的方法操作

在知乎上看到一篇文章,说如果按照代码行数计算工资,于是大家一堆骚操作……


然后在某天闲的{:1_926:},看了一下我公司的代码,想着优化一哈,减少代码行数,于是就针对从1开始累加到N的方法处理一下~~~



    public static int sum(int val) {
      int sum = 0;
      for (int i = 1; i <= val; i++) {
            sum += i;
      }
      return sum;
    }

那首先把括号干掉吧!

public static int sum(int val) {
      int sum = 0;
      for (int i = 1; i <= val; i++)
            sum += i;
      return sum;
    }      


还是感觉有点多呀,是不是因为循环的原因呢,要不大胆考虑一下{:1_904:}

不用循环表达呢?

那要不考虑一下递归,嗯,最后结果写出这么个玩意

public static int sum(int val) {
      if (val == 1)
            return 1;
      else
            return val + sum(val - 1);
    }

感觉和之前用for循环没多大变化呀,:wwqwq

难道就没有办法继续简化了么,,,,

从1开始加数字,那么1+2+3+4……这种有啥规律么,想想曾经老师教我们这个玩意的时候!

纠结,忘差不多了,

那就问百度吧;

哟西,原来这种计算方式叫等差数列呀,涨姿势了。:eee

咦,还有个高级的名字叫高斯(听说过这个人)求和????:eee:eee:eee

原来等差数列还能这么算呀,明白了,那就用代码跑一哈看看~~~

public static int sum(int val) {
       return (val+1)*val/2;
   }

完美~ 就这样吧!:lol


DQQQQQ 发表于 2021-1-5 11:31

我以为会有神马惊天操作呢。。。。。。。。第一个和第二个都是一回事。。。迭代那个你懂得。。。。最后简直。。。。。。。

TeMoon 发表于 2021-1-5 11:49

DQQQQQ 发表于 2021-1-5 11:31
我以为会有神马惊天操作呢。。。。。。。。第一个和第二个都是一回事。。。迭代那个你懂得。。。。最后简直 ...

{:1_907:}大佬,这只是我一个小菜鸟对自己的代码的一点点优化记录,别打击我{:1_937:}

namedlxd 发表于 2021-1-5 13:35

递归写法不如循环

zhaoyf18 发表于 2021-1-5 14:25

喜欢这样的思考。

DQQQQQ 发表于 2021-2-5 15:47

TeMoon 发表于 2021-1-5 11:49
大佬,这只是我一个小菜鸟对自己的代码的一点点优化记录,别打击我

好吧,(╯▽╰),我错了。有各种想法挺好的
页: [1]
查看完整版本: 对常用从1+N的方法操作