PHP程序员面试算法宝典
上QQ阅读APP看书,第一时间看更新

1.8 怎样求解斐波那契数列

难度系数:★★★☆☆

被考查系数:★★★☆☆

题目描述:

若有一只兔子,它每个月生一只小兔子,而小兔子一个月后也开始生产。起初只有一只兔子,一个月后就有两只兔子,两个月后就有三只兔子,三个月后有五只兔子,以此类推, 12个月后有多少只兔子?

分析与解答:

兔子的出生规律数列为1,1,2,3,5,8,13,21…,实际是求解斐波那契数列,即S(n) =S(n-1)+S(n-2),其中n表示月份,S(n)表示n个月后兔子的数量。首先以$k表示要求解多少个月,$k1表示上个月的兔子数量,$k2代表上上个月的兔子数量,$sum 为兔子的总数。然后从1月开始循环,通过斐波那契数列公式得到$sum=$k1+$k2,求和后,把$k1(上个月的兔子数量)赋值给$k2(上上个月的兔子数量),再把$sum(当月的总兔子数)赋值给$k1(上个月的兔子数量)。循环结束后输出的$sum就是兔子的总数了。

实现代码如下:

程序的运行结果为