斐波那契数列问题

【C/C++】斐波那契数列数列系列问题详解 🍉、什么是斐波那契数列?斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N🍉、怎么定义斐波那契数列。 阅读详情

著名的Fibonnaci数列相关的问题经常在面试中遇到。要解决这种问题需要两步:

1,确定遇到的问题是斐波那契数列。这是解决问题的关键点。

斐波那契数列的特点是:数列的第一项为1,第二项为1,从数列的第3项开始,每一项都等于前两项之和:

1,1,2,3,5,8,13,21....

2,解决这个数列问题。

 

下面用实例说明:

问题一

一个人上台阶,一次可以上一级台阶,也可以一次上两级台阶。问,上n级台阶有多少种走法?

解决思路

1,首先我们可以简单计算一下1~4级台阶的上法分别是:

一级台阶只有1种上法;两级台阶有2种上法;三级台阶有3种上法;四级台阶有5种上法。

看到这几项,我们已经可以往斐波那契数列怀疑了。但我们不可能计算出所有的数值,只能总结出一般规律,才能确定这到底是不是斐波那契数列。

2,所以一般性规律,就是上n级台阶的方法和n-1级台阶的方法之间的关联性。

再次思考上台阶的问题,可以得到一个显而易见的结论:

一个人要上到第n级,有两个选择:

  • 上到n-2级台阶以后,一次跨两级来到第n级台阶。这里不再考虑两次跨一级来到n级台阶了,因为这种方法和下面到n-1级台阶的方法部分重合了。
  • 上到n-1级台阶以后,一次跨一级来到第n级台阶。

因此问题已经非常清楚:n级台阶的上法等于上n-2级台阶的方法总数+上n-1级台阶的上法总数。

毫无疑问这就是Fibonnaci数列。

3,确定是Fibonnaci数列后,要解决就非常简单了。如使用递归:

public static long Fib1(int n){
        if (n==1)
            return 1;
        if (n==2)
            return 2;
        return Fib1(n-1)+Fib1(n-2);
    }

而Fibonnaci数列的通项公式就是:F(n)=F(n-1)+F(n-2)。由此可以看到数列的通项公式和递归算法之间的直接联系。

 

问题二

现在延伸一下上面的问题

一个人上台阶,一次可以上一级台阶,也可以一次上两级台阶,也可以一次上三级台阶。问,上n级台阶有多少种走法?

显而易见这是Fibonnaci数列的变种,通项公式应该是:

F(n)=F(n-1)+F(n-2)+F(n-3)

还是用递归解决。

 

兔子问题(斐波那契数列) 有这样一个有趣的“兔子问题”:“假定一对大兔子每月能生一对小兔子,且每对新生的小兔子经过一个月可以长成一对大兔子,具备繁殖能力,如果不发生死亡,且每次均生下一雌一雄,问一年后共有多少对兔子?” 分析:第一个月兔子没有繁殖能力,所以还是一对;两个月后生下一对兔子,共有两对;三个月后,老兔子生下一对,小兔子还没有繁殖能力,所以一共是三对,以此类推,可以列出下表 表中1,1,2,3,5,8, 阅读详情

相关推荐

ROS环境下UR机械臂与Realsense相机手眼标定实战指南

本文提供了在ROS环境下,对UR机械臂与Realsense相机进行手眼标定的完整实战指南。详细介绍了从环境搭建、软件包安装、硬件配置到分步数据采集与计算的完整流程,并分享了常见的避坑技巧与精度优化方法,旨在帮助开发者高效、准确地完成标定,为后续的机器人视觉应用奠定坚实基础。

sunny的博客 646

Fibonacci(斐波那契)数列

这个数列有如下特点: 第1、2两个数为1、1,从第3个数开始,该数是其前面两个数之和。即,该数列为1,1,2,3,5,8,13…… 用for循环写f1=1,f2=1,f3=f1+f2,如下; 以上是用简单变量写的,只定义了两个变量,程序可以顺序计算并输出各数,但不能在内存中保存这些数。假如想直接输出数列中的第25个数,是很困难的。如果用数组来处理,在概念上反而简单了: 每一个数组元素代表数列中的一个数,依次求出各数并存放在相应的数组元素中即可。 如,以下编写的前20个Fibonacci

m0_73939236的博客 1735

用Verilog在FPGA上做个电子琴:从矩阵键盘到蜂鸣器的完整实现(附代码)

本文详细介绍了如何使用Verilog在FPGA上实现一个完整的电子琴系统,涵盖矩阵键盘扫描、音调生成和蜂鸣器驱动等核心模块。通过模块化设计和PWM调制技术,开发者可以构建一个可交互的音乐播放器,项目代码完整且易于扩展,适合FPGA初学者和数字逻辑设计爱好者实践。

weixin_29191669的博客 400

已知斐波那契数列有如下特点:第1,2两个数为1,1。从第三个数开始,该数是其前面两个数之和。即该数列为1,1,2,3,5,8,13,……。本题要求编写程序,计算该数列的前n项和。

已知斐波那契数列有如下特点:第1,2两个数为1,1。从第三个数开始,该数是其前面两个数之和。即该数列为1,1,2,3,5,8,13,……。本题要求编写程序,计算该数列的前n项和。

m0_74399662的博客 3289

遥感卫星影像AI数据集格式规范详解、技术原理与数据生产全流程技术手册

本技术手册旨在系统性地梳理遥感卫星影像AI数据集的各类格式标准(涵盖VOC、COCO、YOLO及遥感专用DOTA格式等),深入剖析其背后的技术原理,并详细阐述数据生产的全过程,涵盖预处理、标注、质量控制及数据增强等关键环节。无论您是刚入门的算法工程师,还是资深的数据生产管理者,本手册都将为您提供详实的参考与指引。

panshengwu的博客 1124

SwissADME:一款在线预测小分子药动学性质的工具

是一个免费的在线工具,由瑞士生物信息学研究所(SIB)开发,用于预测和分析小分子的药物相似性、理化性质、药代动力学特性以及合成可行性等。它是药物设计和开发中常用的工具之一,帮助研究人员快速评估化合物的成药潜力。

药研猿的博客 5016

斐波那契(Fibonacci)数列问题

斐波那契数列有如下特点: 第1,2两个数为1,1。从第三数开始,该数是其前面数之和。即 F1=1; F2=1; F3=F1+F2; Fn=Fn-1+Fn-2; 1,用for语句实现, 代码如下: #include<stdio.h> int Fibon(int n) { int f1=1; int f2=1; int f3; for(int i=2;i<=...

boomLeer的博客 3280

【UE5.3 Cesium for Unreal】GlobePawn编译实战:从源码修改到功能实现

本文详细介绍了在UE5.3中为Cesium for Unreal插件编译和集成非官方增强组件GlobePawn的完整实战流程。从获取源码、准备资产文件、部署项目结构,到逐行修改代码适配工程并解决典型编译错误,最终实现在三维地球上实现类似Google Earth的丝滑鼠标交互体验。

weixin_29011667的博客 307

动态规划(C语言)

一、入门 以斐波那契数列为例,它的第一项为1,第二项为1,从第三项开始,每一项的值都是前面两项的和。让我们求第n项的是多少。对于这个问题,我们从最开始的递归思想来看。 int fib(int n) { if (n == 1 || n == 2) return 1; return fib(n - 1) + fib(n - 2); } 这个递归的时间复杂度是O(2^n),随着n的增大,呈指数级别增长。递归的时间复杂度之所以高,是因为它涉及了很多重复性计算。比如在计算fib(5)的时候,fib(5.

anxiangzsq的博客 7352

Multisim的探针(Probe)及数字电路的一些调试技巧的应用

Multisim的探针(Probe)及数字电路的一些调试技巧的应用 --EE Bang   By  WRS 上图为555方波发生器,根据R1,R2,C2参数的配置可产生频率为46.3KHZ,占空比50%的方波信号,如果用示波器查看波形参数的话需要用两个坐标轴做差,操作不便,另外如果要修改电路将上述电阻换成滑动变阻器的话,使其产生可变频率

Agent Christmas的博客 3万+

SAP 的预算控制并非单一功能,而是根据管控的精细度和业务场景,主要通过三个模块实现:CO(成本控制)、FM(基金管理) 和 PS(项目系统)

SAP系统提供三种预算控制模型:基于CO模块的成本中心/内部订单预算管控,适用于日常费用管理;基于FM模块的基金中心/承诺项目预算控制,满足公共部门严格资金管理需求;基于PS模块的WBS元素预算控制,专为项目型企业设计。各模型通过特定配置实现预算编制、审批、控制和分析功能,并配有核心事务代码(T-Code)支持全流程操作。企业可根据业务场景选择适合的预算控制方式,实现从预算编制到执行监控的闭环管理。

金牌架构师 250

【Python】斐波那契数列之兔子问题

兔子问题 1.1.问题描述 斐波那契在计算之书中,提出了一个有趣的兔子问题: 若一对成年兔子每个月恰好生下一对小兔子,一雌一雄,在年初时只有一对小兔子,在第一个月结束时,他们成长为成年兔子,并且第二个月结束时,这对成年兔子将生下一对小兔子,这种成长与繁殖的过程会一直持续下去,并假设生下的小兔子不会死,那么一年之后共可有多少对兔子? 1.2.问题分析 第一个月 1对幼兔 第二个月 1对成...

IGGIRing的博客 1万+

基于ESP32的智能健康监测系统开发

本文介绍了如何基于ESP32开发智能健康监测系统,从硬件选型、系统架构到软件实现的每一个环节。通过ESP32的Wi-Fi功能、传感器模块和云平台的结合,我们实现了实时健康数据监测、远程查看、报警等功能。系统的低功耗特性使得其适用于长期健康监测,能够为用户提供更便捷的健康管理方案。随着技术的不断发展,未来智能健康监测系统将进一步发展。例如,增加更多的传感器,提升数据分析能力,甚至通过人工智能算法来预测用户的健康趋势,为用户提供个性化的健康建议。

2201_76125393的博客 1103

斐波那契数列 相关问题 详解

斐波那契数列 相关问题 详解

T_Y_F_的博客 1814

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

斐波那契数列·兔子繁殖问题(python)

问题描述 兔子三个月起每个月生一只小兔子,小兔子长到三个月后每个月有生一直兔子,假如兔子都不死,那么第一个月从一只小兔子到N个月后,问兔子的总数为多少? 分析 得每个月到兔子数量数列: 1 (1)=1 1 (2)=1 1 1 (3)...

sinat_41597065的博客 2万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

斐波那契数列【黄金分割数列】-兔子问题

/*********************************************************************************************** *  题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子, *  小兔子长到第三后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?   *  1.程序分析: 兔子(对)的规

tangdong3415的博客 2641

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

斐波那契数列及相关问题

斐波那契数列是这样一个数列0,1,1,2,3,5,8,13,21......可以很容易的看出斐波那契数列的规律,斐波那契数列的定义如下:            0            n=0 f(n)=    1            n=1        f(n-1)+f(n-2)    n>1 问题:实现一个函数,输入n,求斐波那契数列的第n项 解法一:递归 long l

xu_kelly的专栏 500

斐波那契数列问题(兔子问题)

古典问题: 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每 个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1,对于这个一般都知道每个月兔子的对数符合斐波那契数列,但是有一个疑问,就是为什么符合斐波那契数列? 从数学角度来看斐波那契数列就是从第三项开始本项等于前面两项的和,这是对一些特定问题总结出来的数学规律。学数学时只是对这个数列的性质有了初步的了解,遇到一些有关斐波那契数列的具体问题,可以通过斐波那契数列相关运算得出结果,却有了上面的疑问。其实这个很正常,因

Hedong_ling的博客 3899

兔子繁衍问题(pat)斐波那契数列

文章目录引入分析斐波那契数列代码运行测试 引入 兔子繁衍问题。一对兔子,从出生后第 3 个月起每个月都生一对兔子。 小兔 子长到第 3 个月后每个月又生一对兔子。假如兔子都不死,请问第 1 个月出生的 一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到 n 对? 输入一个不超 过 10000 的正整数 n,输出兔子总数达到 n 最少需要的月数 网上说:这个题有两个争议点(坑点),第一个点就是,是第三个月开始生兔子,还是第三个月后开始生兔子。第二个坑点是有的题目没有指名总数是达到n只还是n对 正解:因为这个

klz 7698

算法——斐波那契数列问题

对斐波那契数列的一些问题进行分析

qq_31724803的博客 734

斐波那契数列('兔子数列')的性能问题

斐波那契数列是典型的递归函数解决问题的算法。 普通的斐波那契数列具有很大的性能问题 // 默认没有缓存时 let tesetNum = 30; console.time('NoCache'); function fibonacci1(n) { if(n==0 || n == 1) return n; re...

MichaelAn的博客 352
上一篇: 每天一个设计模式之command
下一篇: 高级排序算法
OnlyQi
博客等级 码龄16年 70粉丝 283原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值