今天看《数据结构与算法之美》的文章,讲的是关于写程序分析时间复杂度的内容。 在看的过程中,遇到等差数列的求和问题,我不知道怎么去求解,于是百度等差数列的求和公式(这是高中学习的内容)。 在我得到了等差数列的求和公式之后,我想着这个公式是怎么推导出来的呢? 这样下次忘记了等差数列的求和公式,也可以通过自己推导得出。 于是去寻找等差数列求和公式的推导过程,在搜索过程中,发现等差数列的求和公式推导过程很有意思。 他是通过将不同数的相加问题转换为相同数的相加问题来解决的。这样讲你可能无感,我举一个例子: 比如1+2+3+4……+10 = ?,这是一个等差数列的求和问题。 我们假设 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 总共有多少个11呢,10个 因此2Sn = 110 ,那么 Sn = 55。 也就是1+2+3+4……+10 = 55。 你看是不是,将不同数的相加问题转换为相同数的相加问题了。 在这一瞬间我觉得数学很有意思,一个看起来挺难的问题,通过数学的转换变得简单。 这让我想起吴军老师多次提到过的解决问题的一个方法就是寻找等价问题。 原来对寻找等价问题一直无感,今天才真正有一点体会寻找等价问题的重要性。 因为一旦寻找到,问题的难度就会下降很多。 |
|