一个优秀的算法可以节省计算机宝贵的计算资源,优化程序结构,提高使用者体验,更好的解决问题。
我们都知道1加到100这个经典的问题,如果用程序表示就是
int sum = 0;
for (int t = 0; t <= 100; t++) {
sum = sum + t;
}
这种算法基本上学过一点高级语言的同学应该都能写出来吧
然而有没有更简单高效的方法呢?
高斯小时候非常淘气,一次数学课上,老师为了让他们安静下来,给他们列了一道很难的算式,让他们一个小时内算出1+2+3+4+5+6+……+100的得数。全班只有高斯用了不到20分钟给出了答案,因为他想到了用(1+100)+(2+99)+(3+98)……+(50+51)……一共有50个101,所以50×101就是1加到一百的得数。后来人们把这种简便算法称作高斯算法。
具体的方法是:首项加末项乘以项数除以2
项数的计算方法是末项减去首项除以项差(每项之间的差)加1.
如:1+2+3+4+5+······+n,则用字母表示为:n(1+n)/2
等差数列求和公式 Sn=(a1+an)n/2 Sn=n(2a1+(n-1)d)/2; d=公差 Sn=An2+Bn; A=d/2,B=a1-(d/2)
我们今天就来探讨一下这