从零开始学算法。
首先说说递推吧,举一个耳熟能详的例子,就是有关兔子的计划生育问题:兔子的生育能力很强啊,一对兔子出生两个月后就能生一对兔子,并且以后每月都能再生一对。简单点说,就是新兔子要出生隔月后才能生(发育得很快嘛),那么现在想想,如果所有兔子都长命百岁,一年后有多少对兔子呢?
经过月数:---0---1---2---3---4---5---6---7---8---9--10--11--12
兔子对数:---1---1---2---3---5---8--13--21--34--55--89-144-233
也就是说,这个月的兔子对数为:上个月的兔子对数+它们此月所生的小兔子对数。那么它们此月到底生了多少对小兔子呢?很明显,刚刚我们分析过,在上个月的兔子中,只有已经出生一月以上的老兔子才能生,其实就是上上个月的兔子对数,且每对生一对。于是就有了:本月兔子=上月兔子+上上月兔子。
原来就是Fibonacci数列(其实人家本来就叫兔子数列)。
F(1)=F(2)=1 (n=1对应上面的第0月)
F(n)=F(n-1)+F(n-2) (n≥3)