Fibonacci 定义

斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”。具体是这样一个数列:1、1、2、3、5、8、13、21、34、……可以定义为以下关系:

当n>1时,这个数列第n项的值是前两项之和

实现 Fibonacci 代码

由 Fibonacci 定义可得数列可递归地计算如下:

int fibonacci (int n) {if (n <= 1) return 1;return fibonacci(n - 1) + fibonacci(n - 2);
}

之前 “函数的递归与迭代” 中提到用递归方法实现斐波那契数列效率十分低,见链接:https://blog.csdn.net/qq_44759710/article/details/99686359.
为此我们可以使用迭代法,用循环实现:

int fib(int n) {int result;int result1;int result2;result = result1 = 1;while (n > 2){n--;result2 = result1;result1 = result;result = result1 + result2;}return result;
}

求 Fibonacci 通项公式

由定义可推导出通项公式:
方法1:待定系数法构造等比数列(初等代数解法)
设常数 r , s ,使得
F( n ) - r * F(n - 1) = s * [F(n - 1) - r * F(n - 2)]
则有 r + s = 1,- r * s = 1
当 n >= 3时,有

联立以上 n - 2 个式子可得:

可化简且进一步转换为:

(显然这是一个以 s^(n - 1) 为首项,以r^(n - 1)为末项,r / s 为公比的等比数列的各项的和)


方法2:待定系数法构造等比数列(初等代数解法)
方法3:母函数法
此处只详细解释方法一

Fibonacci 的运用

从上述通项公式,我们可以找到很熟悉的数字
r = - ([5 ^ (1 / 2) - 1] / 2 近似等于0.618
找出几个数据,求出前一项与后一项的比值:
1÷1=1
1÷2=0.5
2÷3=0.666
3÷5=0.6
5÷8=0.625
……
144÷233=0.618025
……
46368÷75025=0.6180339886
……
容易得出比值越来越接近0.618,即黄金比

这个关系可容易证得:
F(n) + F(n + 1) = F(n + 2)
两边同时除以 F(n + 1),可得:
F(n) / F(n + 1) + 1 = F(n + 2) / F(n + 1)
设lim [F(n) / F(n + 1)] = lim [F(n + 1) / F(n + 2)] = x
即有 x + 1 = 1 / x
易得 x = [5 ^ (1 / 2) - 1] / 2 = 0.618

斐波那契数亦是经常出现在我们的生活中:

例一:

如图,将数列关系转为正方形边长问题,可得出以上具有美感的图片和海螺的纹路类似,自然界中常见的松果、向日葵等的花瓣、果实排列都可以找到类似的规律

例二:
求矩形面积:

如图,矩形的长宽变化为斐波那契数列,可以得:

正方形面积之和可以转换成求矩形的面积

例三:关于斐波那契数列对于数的整除
每2个连续的数中有且只有一个被2整除,
每3个连续的数中有且只有一个被3整除,
每4个连续的数中有且只有一个被5整除,
每5个连续的数中有且只有一个被8整除,
……
每n个连续的数中有且只有一个被F(n)整除

例四:兔子问题
被称为兔子数列的斐波那契数列,解决的是一个关于兔子繁殖的问题:
“……兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。如果所有兔子都不死,那么一年以后可以繁殖多少对兔子?”
经过对题目的分析,可以得到兔子的繁殖情况:

经过月数 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

由上表可以得出以下代码来求得兔子在一段时间后的对数:

int rabbit(int month) {int num;int num1;int num2;num = num1 = 1;while (month > 2){month--;num2 = num1;num1 = num;num = num1 + num2;}return num;
}

斐波那契数列 问题分析及运用(兔子繁殖问题)相关推荐

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

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

  2. 斐波那契数列是个啥(兔子数列)]

    [斐波那契数列是个啥(兔子数列)] 背景 这是我在公交车上突然就想起了这个话题,之后总结了一下,很简单: 斐波那契在<计算之术>这本书中,提出了一个问题:在第一个月有一对刚出生的小兔子,在 ...

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

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

  4. java实现斐波那契数列求解办法

    斐波那契数列最早是根据兔子繁殖问题而产生的,大致有这样的一个数列:1,1,2,3,5,8,13,...,其中第一.第二项固定为1,后面每一项都是前面两项之和.使用数学公式就是f(n) = f(n-1) ...

  5. 求解斐波那契数列复杂度分析

    前言:斐波那契作为一个算法基础知识,大家一定要掌握,祝大家学得开心~ 什么是斐波那契数列(Fibonacci sequence)? 斐波那契数列(Fibonacci sequence),又称黄金分割数 ...

  6. JavaScript递归函数实现斐波那契数列、黄金分割数列,递归定义与用法实例分析,

    递归 所递归函数就是在函数体内调用本函数.使用递归函数一定要注意,处理不当就会进入死循环.要避免进入死循环,写递归函数先要写一个结束条件(为了结束循环)递归函数一般比如阶乘问题. 下面的代码就是一个死 ...

  7. 斐波那契数列(一)--对比递归与动态规划(JAVA)

    兔子繁殖问题: 这是一个有趣的古典数学问题,著名意大利数学家Fibonacci曾提出一个问题:有一对小兔子,从出生后第3个月起每个月都生一对兔子.小兔子长到第3个月后每个月又生一对兔子.按此规律,假设 ...

  8. 萌新的Python练习实例100例(六)斐波那契数列

    题目: 用Python写出斐波那契数列,并取出第10位数 分析: 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibona ...

  9. c语言---c语言中的斐波那契数列程序

    首先就要先了解何为斐波那契数列---斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故 ...

最新文章

  1. WPF命中测试示例(二)——几何区域命中测试
  2. 解决EXECL单元格不可以填充颜色
  3. socket编程资料-网络收集
  4. php连接mysql数据,php连接mysql数据库
  5. elasticsearch部署
  6. SpringBoot整合阿里Druid数据源及Spring-Data-Jpa
  7. linux下mysql用户_linux下mysql用户管理方法
  8. python和java哪个好找工作-想转行,Java与python该选择哪个?
  9. 213. Orchard学习 二 3、001.IOrchardHost 与Autofac
  10. GIT仓库瘦身及GIT LFS迁移说明
  11. QT 自带字体样式有哪些?
  12. Optisystem中器件的学习(1-Visualizer Library、Sensors)
  13. MOSSE相关滤波算法学习笔记
  14. matlab傅里叶变换处理图像,MATLAB数字图像处理(1)基本操作和傅里叶变换
  15. 机器人动力学参数辨识
  16. 【深度学习中的数学】高维矩阵乘法规则
  17. CSS border dashed 虚线调整
  18. java实现五子棋获胜判断
  19. 微信文件指定应用打开并获取文件路径,以及遇到的一个坑
  20. 图书馆管理系统(详细)(C语言版本)

热门文章

  1. CSS:实现多行文本垂直居中的四种方法
  2. 最详细的Neo4J解读(附安装教程)
  3. 干货!小程序,爆红的三大规律
  4. 怎么购买 nest_购买Nest恒温器时如何省钱
  5. 抖音一直播间卖假 “耐克”,其工厂被警方打掉
  6. zcmu-5210: 小e的选择题(快速幂)
  7. halcon histo_to_thresh 高斯门槛值分布
  8. 2021-08-18王道 数据结构 p90 第4题
  9. 面向对象设计(OOD)——设计指导编程,不要再半途而废啦
  10. sql server 性能调优之 资源等待 LCk