Java计算1+2+…+n

Java计算1+2+…+n前言写这篇博客前,首先声明我只是个菜鸟,不是大牛,写的不好或者有错漏的地方希望各位不吝赐教!这些博客主要是java基础学习过程中的笔记!正文废话不多说,我们直接进入主题

前言

写这篇博客前,首先声明我只是个菜鸟,不是大牛,写的不好或者有错漏的地方希望各位不吝赐教!这些博客主要是java基础学习过程中的笔记!

正文

废话不多说,我们直接进入主题。当看到一个具体的N值的时候,比如100,1000,or其他的时候,我们很多计算机专业同学呢第一反应就是叠加啊,for循环累加,或者while循环累加。因为初学java语法基础的时候,老师留的练习题也是这样,所以以后遇到这样的题,条件反射当然是搬出这样的家底了(这也不奇怪,谁叫我们都是从题海战术中爬出来的)使用for循环代码如下:

                        

public int sum(int n){ int sum=0;//需要返回的结果 for(int i=1;i<=n;i++){ sum+=i; } return sum; }

 使用while循环代码结构也是差不多的,代码如下

public int sum2(int n){ int sum =0; int i=1; while(i<=n){ sum+=i; i++; } return sum; }

上面的代码都是正确的,结果也是正确的。当n很小的时候性能上没有什么影响,但是当n比较大且在庞大复杂的系统里时,它也许会成为性能瓶颈。回到问题本身时,你拿这个题目给数学系的同学看,他会鄙视你,说这不是高中的数学知识点吗?仔细观察这是数字的特点相差都为1,直接套用等差数列公式不就行了吗?等差数列公式长什么样,其实我也不能马上背出来,但是我可以自己推导出来啊(ps:虽然不能背出来,但是经过高中的洗刷,还是有印象的)or百度啊。它的样子呢就是这样:

等差数列求和公式
  • formula
公式描述:

公式中首项为a1,末项为an,项数为n,公差为d,前n项和为Sn。
因此我们的求和函数代码如下:

/** * @param a1 首项 * @param n 项数 * @param d 公差 * @return */ public double sum3(int a1,int n,double d){ double sum=0; sum = n*a1+n*(n-1)*d/2; return sum; }

求和效率是不是瞬间提高了。因此在系统开发的时候,除了得到正确的结果外还要不断提高代码的效率,这样才能不断提高自己,而不是代码搬运工。



今天的文章
Java计算1+2+…+n分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/60186.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注