数列篇之一

我们知道数学是一种工具,更是一种思想,在我们的日常生活和工作中都有广泛的应用。

       比如算法中有一种叫做“递推思想”,转化到数学上来说就是“数列”,而我们苦逼的coding,复杂度搞死也只能控制在O(N),但有没有

想过对这种问题可以一针见血,一刀毙命,这就需要用到“数学”上的知识。猴子吃桃 问题就是一个活生生的例子,评论上给出了很好的解决方

案,学习数学就应该能让它解决点实际上的问题,下面来推导一下。

     为了方便,将递推公式写成:

  an=2an-1+2  ①

已知首项:a1=1

将①变形得

 an+2=2(an-1+2)        ②

由②可推导

 an-1+2=2(an-2+2)    ③

 an-2+2=2(an-3+2)    ④

   ...

 a3+2=2(a2+2)          ...

 a2+2=2(a1+2)          ...

然后我们将这N-1项相乘,化简得

an+2=2n-1(a1+2)  ⑤

又因为 a1=1 则通项公式为

an=2n-1*3-2        ⑥

根据”递推公式“我们求出了”通项公式“,现在我们可以秒杀任何一天的桃子数量,现在又来问题了,如何求出前N天的桃子总和,在

数列中对应的就是求前n项和的问题,在得知an的情况下,求Sn也是秒杀效果。

⑥式是典型的{nan+bn}模型,针对这个模型,我们拆分成{nan}+{bn},然后分别计算它们的前n项和,最后合并。

<1>   3*2n-1 的前n项和为:   Sn=3*20+3*21+3*22+3*23+...+ 3*2n-1         

变形⑦可知                  2Sn=3*21+3*22+3*23+...+3*2n                  ⑧

⑦-⑧得(错位相减)

                                 -Sn=3*20-3*2n

                         =>    Sn=3*2n-3                                            

<2>  2的前n项和为: =>    Tn=2n

综合两部分结果可知:Sm=3*2m-3-2m。

最后我们推导出了 猴子吃桃 问题的前n项和,当你苦逼coding的时候,人家早已推导出了,而且复杂度宇宙第一...

 

上面的场景只是想让大家知道数列对我们来说非常重要,后面我会拿算法上的题目用数学来KO,让你知道不懂数学简直就弱爆了,

作为数列专题篇,基础知识必不可少,同样我也可以巩固和复习,嘿嘿。

 

在数列中:通项公式,递推公式,前n项和始终贯穿于数列学习的始终,首篇要了解下面几点:

①:  能够目测简单数列的通项公式。

        比如:1,4,9,16,..... 

               1,0,1,0....

②:  能够根据递推公式求数列的通项公式,比如(猴子吃桃问题)

③:  能够根据数列的前n项和求数列的通项公式。

         an=    s1         (n=1)

                   sn-sn-1 (n>=2)

④: 能够求数列的前n项的和Sn

       常用方法:倒序相加,错位相减, 分项相消法(有技巧),倍数法。

⑤: 能够理解{an+bn},{anbn}模型的前N项求和问题。

posted on 2017-12-04 10:54  比特飞流  阅读(227)  评论(0编辑  收藏  举报

导航