文章内容摘自——百度百科

1. 定义

斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列: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*)

2. 递推公式

斐波那契数列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...

如果设F(n)为该数列的第n项(n∈N*),那么这句话可以写成如下形式::F(n)=F(n-1)+F(n-2)

显然这是一个线性递推数列。

3. 通项公式

(如上,又称为“比内公式”,是用无理数表示有理数的一个范例。)

注:此时

4. 与黄金分割关系

有趣的是,这样一个完全是自然数的数列,通项公式却是用无理数来表达的。而且当n趋向于无穷大时,前一项与后一项的比值越来越逼近黄金分割0.618(或者说后一项与前一项的比值小数部分越来越逼近0.618)。

1÷1=1,1÷2=0.5,2÷3=0.666...,3÷5=0.6,5÷8=0.625…………,55÷89=0.617977……………144÷233=0.618025…46368÷75025=0.6180339886…...

越到后面,这些比值越接近黄金比.

5. 算法应用

(1)现有长为144cm的铁丝,要截成n小段(n>2),每段的长度不小于1cm,如果其中任意三小段都不能拼成三角形,则n的最大值为多少?

分析:由于形成三角形的充要条件是任何两边之和大于第三边,因此不构成三角形的条件就是存在两边之和不超过另一边。截成的铁丝最小为1,因此可以放2个1,第三条线段就是2(为了使得n最大,因此要使剩下来的铁丝尽可能长,因此每一条线段总是前面的相邻2段之和),依次为:1、1、2、3、5、8、13、21、34、55,以上各数之和为143,与144相差1,因此可以取最后一段为56,这时n达到最大为10。

我们看到,“每段的长度不小于1”这个条件起了控制全局的作用,正是这个最小数1产生了斐波那契数列,如果把1换成其他数,递推关系保留了,但这个数列消失了。这里,三角形的三边关系定理和斐波那契数列发生了一个联系。

在这个问题中,144>143,这个143是斐波那契数列的前n项和,我们是把144超出143的部分加到最后的一个数上去,如果加到其他数上,就有3条线段可以构成三角形了。

(2)有一段楼梯有10级台阶,规定每一步只能跨一级或两级,要登上第10级台阶有几种不同的走法?

这就是一个斐波那契数列:登上第一级台阶有一种登法;登上两级台阶,有两种登法;登上三级台阶,有三种登法;登上四级台阶,有五种登法……

1,2,3,5,8,13……所以,登上十级,有89种走法。

((3)类似的,一枚均匀的硬币掷10次,问不连续出现正面的可能情形有多少种?

答案是(1/√5)*{[(1+√5)/2]^(10+2) - [(1-√5)/2]^(10+2)}=144种。

求递推数列a⑴=1,a(n+1)=1+1/a(n)的通项公式

由数学归纳法可以得到:a(n)=F(n+1)/F(n),将斐波那契数列的通项式代入,化简就得结果。

(4)兔子繁殖问题

斐波那契数列又因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为“兔子数列”。

一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。如果所有兔子都不死,那么一年以后可以繁殖多少对兔子?

我们不妨拿新出生的一对小兔子分析一下:

第一个月小兔子没有繁殖能力,所以还是一对

两个月后,生下一对小兔对数共有两对

三个月以后,老兔子又生下一对,因为小兔子还没有繁殖能力,所以一共是三对

------

依次类推可以列出下表:

经过月数

1

2

3

4

5

6

7

8

9

10

11

12

幼仔对数

1

0

1

1

2

3

5

8

13

21

34

55

成兔对数

0

1

1

2

3

5

8

13

21

34

55

89

 

总体对数

1

1

2

3

5

8

13

21

34

55

89

144

 

可以看出幼仔对数、成兔对数、总体对数都构成了一个数列。这个数列有关十分明显的特点,那是:前面相邻两项之和,构成了后一项。

这个数列是意大利中世纪数学家斐波那契在<算盘全书>中提出的,这个级数的通项公式,除了具有a(n+2)=an+a(n+1)的性质外,还可以证明通项公式为:

,(n=1,2,3,...)

代码

c++代码:

//输入n,求a(n)
#include <iostream>
#include <cstdio>
using namespace std;int fun(int n) {if (n == 0) return 0;if (n == 1) return 1;if (n >= 2)return (fun(n-1) + fun(n-2));
}int main()
{int n;cin>>n;printf("%d\n", fun(n));return 0;
}

python代码:

# 输出斐波那契数列
arr = []
def fib(n):   a, b = 1, 1while b < n:   a, b = b, a+barr.append(a)n = int(input())
fib(n)
print(arr)
print(len(arr))

摘自:

百度百科

斐波那契数列(兔子数列)相关推荐

  1. 每日C语言代码(The third day)——斐波那契(兔子数列)

    今天来讲一个很常见的代码--斐波那契数列,虽然有很多人都发布了,但是我这次想要做一个比较深层次的分析! 编程求fibonacci数列:1,1,2,3,5,8--的前n个数. 首先我们先来解析一下这个数 ...

  2. 斐波那契生兔子问题(一月大兔子生a对,二月大兔子生b对,三月大兔子生c对。。。)

    现提出一个问题:一对兔子一个月大时可生育a对兔子,两个月大的兔子生育b对兔子,三个月大及以后的兔子生c对兔子.假设兔子不死,现有1对兔子,问N个月后有多少只兔子. 看起来这是一个递推数列的问题,要注意 ...

  3. 斐波那契之兔子问题解释

    13世纪意大利数学家斐波那契在他的<算盘书>中提出这样一个问题:有人想知道一年内一对兔子可繁殖成多少对,便筑了一道围墙把一对兔子关在里面.已知一对兔子每一个月可以生一对小兔子,而一对兔子出 ...

  4. 斐波那契(兔子)数列python

    4.已知一对兔子每一个月可以生一对小兔子, 而一对兔子出生后第三个月就开始生小兔子. 假如一年内没有发生死亡,则一对兔子一年内能繁殖成多少对? a = b =1 第一个月 1对 莫名其妙得到的

  5. java递归方法编写兔子繁殖_2018-04-15 斐波那契数列(兔子繁殖数列)

    费波那契数列(兔子繁殖数列) 兔子在出生两个月后,就有繁殖能力,一对成年而有繁殖力的兔子每个月能生出一对小兔子来.假设一年以后所有兔子都不死,那么一对小兔子一年以后可以繁殖多少对兔子? 我们来分析一下 ...

  6. python斐波那契数列前20项_兔子繁殖问题带来的智商碾压:斐波那契数列趣谈

    本文来自公众号:超级数学建模 微信号 :supermodeling 原文标题:斐波那契数列趣谈 via 善科 by BB 一般认为斐波那契数列的提出是基于兔子的繁殖问题:如果一开始有一对兔子,它们每月 ...

  7. python兔子繁殖问题中如何输出相应月份的数列_斐波那契数列介绍及Python中五种方法斐波那契数列...

    Q:斐波那契数列为何那么重要,全部关于数学的书几乎都会提到? A:由于斐波那契数列在数学和生活以及天然界中都很是有用.html 1. 斐波那契数列 概念引入 斐波那契数列(Fibonacci sequ ...

  8. [剑指Offer]斐波那契数列、跳台阶、兔子数量问题(递归、非递归)(Java)

    剑指Offer题目 斐波那契数列 题目描述 [剑指Offer 7]大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0). [剑指Offer 8]一只青蛙 ...

  9. 斐波那契数列-----兔子繁殖问题

    斐波那契数列-----兔子繁殖问题 斐波那契数列又因数学家莱昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为"兔子数列". 一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个 ...

  10. 兔子数列(斐波那契数列)java语句的实现

    兔子数列是一个经典的数列,又称黄金分割数列.因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为"兔子数列",指的是这样一个数列:1.1.2.3.5.8.13.21.34.- ...

最新文章

  1. 深度学习100例 | 第28天:水果的识别与分类(准确率99.9%)
  2. JDK/Dubbo/Spring 三种 SPI 机制,谁更好呢?
  3. mysql主从复制缺陷_mysql主从复制及遇到的坑
  4. Codeforces344_C(数学思维)
  5. Spring的使用——基础环境搭建以及IOC概念理解(持续更新)
  6. 固件的完整形式是什么?
  7. Docker的Solomon Hykes在OSCON上的主题演讲的要点
  8. java记事本获取当前时间_calendar 用Java写的日历,有查询时间日期,还有记事本以及到点提醒功能。 Develop 238万源代码下载- www.pudn.com...
  9. 小新 无法开机 联想_19年最“狠”轻薄本诞生 联想小新Pro 13优缺点一览
  10. 用AD9画51单片机的最小系统
  11. java pos58打印_POS58票据热敏打印机,怎么用ESC/POS命令控制打印
  12. 2022-2028年全球与中国MEMS话筒行业竞争格局与投资战略研究
  13. linux csr蓝牙驱动下载,佳能 CSR Bluetooth Device 驱动程序下载-更新佳能软件(蓝牙)...
  14. SCCM推送升级Win10
  15. Flask 物联网局部应用情景
  16. 为什么会出现淘宝客比价订单?怎样才能省钱购物?
  17. 微博相册一键批量下载 Chrome 扩展
  18. VB 四言古诗词赏析 制作
  19. python调用PHP
  20. @Inject 注解的使用

热门文章

  1. 利用selenium自动登录126邮箱
  2. 如何查看内存条的实际使用频率
  3. cadence SPB17.4 - orcad - 层次原理图
  4. 机器智能正在代替人类做的5件事
  5. 原生JS实现中文简繁切换
  6. CodeCraft-20 (Div. 2) E. Team Building(状压dp)
  7. ubuntu18 安装caj阅读器 wine
  8. 用html做祝福语朋友,对朋友的励志祝福语大全
  9. python透视表画图_如何用Python实现透视表?
  10. 给大家分享一篇 tkinter python(图形开发界面)