在知乎上看到一篇文章,说如果按照代码行数计算工资,于是大家一堆骚操作……
然后在某天闲的,看了一下我公司的代码,想着优化一哈,减少代码行数,于是就针对从1开始累加到N的方法处理一下~~~
[Java] 纯文本查看 复制代码
public static int sum(int val) {
int sum = 0;
for (int i = 1; i <= val; i++) {
sum += i;
}
return sum;
}
那首先把括号干掉吧!
[Java] 纯文本查看 复制代码 public static int sum(int val) {
int sum = 0;
for (int i = 1; i <= val; i++)
sum += i;
return sum;
}
还是感觉有点多呀,是不是因为循环的原因呢,要不大胆考虑一下
不用循环表达呢?
那要不考虑一下递归,嗯,最后结果写出这么个玩意
[Java] 纯文本查看 复制代码 public static int sum(int val) {
if (val == 1)
return 1;
else
return val + sum(val - 1);
}
感觉和之前用for循环没多大变化呀,
难道就没有办法继续简化了么,,,,
从1开始加数字,那么1+2+3+4……这种有啥规律么,想想曾经老师教我们这个玩意的时候!
纠结,忘差不多了,
那就问百度吧;
哟西,原来这种计算方式叫等差数列呀,涨姿势了。
咦,还有个高级的名字叫高斯(听说过这个人)求和????
原来等差数列还能这么算呀,明白了,那就用代码跑一哈看看~~~
[Java] 纯文本查看 复制代码 public static int sum(int val) {
return (val+1)*val/2;
}
完美~ 就这样吧!
|