OC算法03:斐波那契数列探索
简介
斐波那契数列
(Fibonacci sequence),又称黄金分割数列、因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”
,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N*),用文字来说,就是斐波那契数列由 0 和 1 开始,之后的斐波那契数列系数就由 之前的两数相加。
排列组合
问:有一段楼梯有10级台阶,规定每一步只能跨一级或两级,要登上第 10 级台阶有几种不同的走法?
分析:这就是一个斐波那契数列:登上第一级台阶有一种登法;登上两级台阶,有两种登法;登上三级台阶,有三种登法;登上四级台阶,有五种登法……
1,2,3,5,8,13…… 所以,登上十级,有 89 种走法。
答:
1 | - (void)demo{ |
打印结果:89
兔子繁殖问题
斐波那契数列又因数学家莱昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为“兔子数列”。
问:一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。如果所有兔子都不死,那么一年以后可以繁殖多少对兔子?
分析:我们不妨拿新出生的一对小兔子分析一下:
第一个月小兔子没有繁殖能力,所以还是一对
两个月后,生下一对小兔对数共有两对
三个月以后,老兔子又生下一对,因为小兔子还没有繁殖能力,所以一共是三对
------
依次类推可以列出下表:
幼仔对数=前月成兔对数
成兔对数=前月成兔对数+前月幼仔对数
总体对数=本月成兔对数+本月幼仔对数
可以看出幼仔对数、成兔对数、总体对数都构成了一个数列。这个数列有关十分明显的特点,那是:前面相邻两项之和,构成了后一项。
答:
1 | - (void)demo1{ |
打印结果:233
- Post title:OC算法03:斐波那契数列探索
- Post author:张建
- Create time:2020-08-09 13:56:16
- Post link:https://redefine.ohevan.com/2020/08/09/OC数据结构和算法/OC算法03:斐波那契数列探索/
- Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.