記得學習C語言的時候,老師教for循環語句舉例時就是級數求和(大概很多C教程都喜歡用這個例子的吧)。
而且考試時試卷上經常都會有這道題目,于是很多同學幾乎是把整個程序段背下來,現在回想一下還真覺得有點搞笑的味道:)
說起來也不能怪俺們的老師和同學啊,俺們國家的教育就是這樣,沒辦法啊,誰叫俺們都是中國人呢,呵呵(沒有崇洋的味道啊,只是對俺們國家的教育頗有微詞啦)。

那時侯我們的標準程序段是這樣的:
∑N = 1 + 2 ... N
int main()
{
 int i, sum = 0;
 for(i = 1;i < N;i ++)sum += i;
 printf("1-N的級數和是: %i",sum);
 return 0;
}
這個標準還是我“制定”的啦,全班2/3的同學都用俺的標準應付老師和試卷,哈哈(成就感?!)。
這個標準是我知道的第一個知道求級數和的方法!

后來,學數據結構的排序方法時,因為書上講到冒泡、選擇還有個什么排序法來著,循環次數正好就是一個級數和,就想知道到底會是多少次循環?
于是發奮圖強(發糞涂墻?),可能是我比別人笨,我硬生生研究了一天才得出一個公式:
∑N = (N ^ 2) / 2 + N / 2
可是當我公布我的發現時,遭受了沉重的打擊:有人說中學時學過這個公式了(我汗顏,怎么我就不記得中學課本上有這個公式啊?哪位同仁中學時學過這個公式告訴俺一聲啊,這事俺如今還耿耿如懷呢?!)。
不過不管怎么樣,我總算是知道了第二種方法:
int main()
{
 float sum;
 sum = (N ^ 2) / 2 + N / 2;
 printf("1-N的級數和是: %i",(int)sum);
 return 0;
}

再就是今天和女友無意間說起這個話題,竟然又讓我發現了另外一種更簡單的方法(天才?笨蛋?):
∑N = N * (N / 2 + 0.5)
呵呵,是不是有點像上一個公式的簡化公式啊?!
俺沒有去做簡化啦,也沒有去驗證(主要是不記得怎么去簡化了啦),哈哈。
終于,第三種方法出爐了:
int main()
{
 float sum;
 sum = N * (N / 2 + 0.5);
 printf("1-N的級數和是: %i",(int)sum);
 return 0;
}

呵呵,也不知道會不會有更簡單的方法。
此文純屬無聊之作啦(有人會像偶一樣無聊嗎?!),哈哈!!!