今天看《數(shù)據(jù)結(jié)構(gòu)與算法之美》的文章,講的是關(guān)于寫程序分析時(shí)間復(fù)雜度的內(nèi)容。 在看的過程中,遇到等差數(shù)列的求和問題,我不知道怎么去求解,于是百度等差數(shù)列的求和公式(這是高中學(xué)習(xí)的內(nèi)容)。 在我得到了等差數(shù)列的求和公式之后,我想著這個(gè)公式是怎么推導(dǎo)出來的呢? 這樣下次忘記了等差數(shù)列的求和公式,也可以通過自己推導(dǎo)得出。 于是去尋找等差數(shù)列求和公式的推導(dǎo)過程,在搜索過程中,發(fā)現(xiàn)等差數(shù)列的求和公式推導(dǎo)過程很有意思。 他是通過將不同數(shù)的相加問題轉(zhuǎn)換為相同數(shù)的相加問題來解決的。這樣講你可能無感,我舉一個(gè)例子: 比如1+2+3+4……+10 = ?,這是一個(gè)等差數(shù)列的求和問題。 我們假設(shè) Sn = 1+2+3+4……+10,那么Sn = 10+9+8+7……+1。 Sn = 1+2+3+4……+10 Sn = 10+9+8+7……+1 這二者相加也就是 2Sn = 11+11+11+11……+11 總共有多少個(gè)11呢,10個(gè) 因此2Sn = 110 ,那么 Sn = 55。 也就是1+2+3+4……+10 = 55。 你看是不是,將不同數(shù)的相加問題轉(zhuǎn)換為相同數(shù)的相加問題了。 在這一瞬間我覺得數(shù)學(xué)很有意思,一個(gè)看起來挺難的問題,通過數(shù)學(xué)的轉(zhuǎn)換變得簡單。 這讓我想起吳軍老師多次提到過的解決問題的一個(gè)方法就是尋找等價(jià)問題。 原來對(duì)尋找等價(jià)問題一直無感,今天才真正有一點(diǎn)體會(huì)尋找等價(jià)問題的重要性。 因?yàn)橐坏ふ业?,問題的難度就會(huì)下降很多。 |
|