AcWing 21. 斐波那契数列(迭代算法(或DP算法))

斐波那契数列的迭代算法和递归算法 斐波那契数列(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*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此...... 阅读详情

斐波那契数列的求法有很多种,这里只列举一种最简单的方法。我们先假设斐波那契数列是如下排列的:

下标-1012345……
数据1011235……

我们先设置两个变量f和g,并分别初始化为0和1以代表第0号元素和第-1号元素(实际上-1号元素并不存在,只是为了更好地。然后我们可以很容易地发现,只要不断重复进行如下操作

f = f + g;
g = f - g;

就能令f和g不断以一个单位的速度在数列中进行右移,从而在n次迭代后得到对应的元素。

具体代码如下:

class Solution {
public:
    int Fibonacci(int n) {
        int f = 0, g = 1;
        while(n--){
            f += g;
            g = f - g;
        }
        return f;
    }
};

另外值得一提的是,该算法的DP算法分析思路与以上思路一致,只不过以上代码没有用到dp数组而已。

斐波那契数列(Fibonacci sequence)【思路及实现】 定义 斐波那契数列(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... 阅读详情

相关推荐

【C语言】斐波那契数列【递归与迭代】

一、背景介绍 二、思路分析 三、代码实现 四、拓展阅读 五、非递归法代码实现

moteandsunlight的博客 2万+

空间复杂度,fib理解,剪枝重复计算

描述 大家都知道斐波那契数列,现在要求输入一个正整数 n ,请你输出斐波那契数列的第 n 项。 斐波那契数列是一个满足fib(x)=\left\{ \begin{array}{rcl} 1 & {x=1,2}\\ fib(x-1)+fib(x-2) &{x>2}\\ \end{array} \right.fib(x)={1fib(x−1)+fib(x−2)​x=1,2x>2​的数列 数据范围:1\leq n\leq 401≤n≤40 要 import java.u..

weixin_59551524的博客 861

Datawhale~数据挖掘实践之序列问题处理~天池·资金流入流出预测-挑战Baseline~Day01~数据探索与分析

写在前面✍ 本系列笔记基于天池平台上“资金流入流出预测-挑战Baseline”学习赛,记录如何完整的打一次数据挖掘类比赛。同时,该比赛属于序列建模问题,希望学习完成这个任务,可以对序列问题的处理有一定的独立思考能力和实践操作能力,可以将所学理论,用编码的形式和实际的问题得到深入。 第一篇,EDA Content: 初步了解赛题及数据 1.1 任务 1.2 用户基本信息数据 1.3 用户申购赎回数据 1.4 收益率表 1.5 银行间拆借利率表 1.6 提交格式 1.7 评分指标 EDA 1 初.

小卜妞的博客 2358

求斐波那契(Fibonacci)数列(循环迭代)

【题目描述】 求斐波那契数列的前40项。斐波那契数列公式如下 f(1)=1, f(2)=1, f(n)=f(n-1)+f(n-2)

m0_60533232的博客 3747

嵌入式存储实战:FAL+SFUD+flashDB三件套在STM32上的完整移植指南(附避坑技巧)

本文提供了一套在STM32上完整移植FAL、SFUD与flashDB嵌入式存储框架的实战指南。详细解析了从SPI驱动配置、SFUD设备识别、FAL抽象层分区到flashDB键值数据库初始化的全流程,并分享了关键的避坑技巧与性能优化建议,帮助开发者构建稳定可靠的嵌入式存储系统。

rnn9storyteller的博客 1017

每日算法讲解(十):使用BP神经网络进行回归任务

BP神经网络是由输入层、隐藏层和输出层组成的多层前馈神经网络,通过反向传播算法(Backpropagation)来调整网络权重和偏置,以最小化预测误差。前向传播:将输入数据通过网络,计算每层的激活值和输出。计算误差:根据预测值和真实值之间的差异计算损失函数值。反向传播:从输出层开始,逐层向后计算梯度,并更新每层的权重和偏置。重复迭代:通过多次迭代,逐步减小预测误差,优化模型参数。接下来,我们定义一个包含一个输入层、两个隐藏层和一个输出层的BP神经网络模型。# 定义模型# 编译模型。

rhtee的博客 1726

斐波那契数的两种求法(迭代,递归)

**斐波那契数,通常用 F(n) 表示,形成的序列称为斐波那契数列。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - 2), 其中 N > 1.’ 了解到它的规律后,我们很简单的能想到两种做法: 1.递归 2.迭代 对于一个我们已经了解其规律的函数,我们用递归可以很简单的求出它...

凌桓丶的博客 5328

西电2023秋季机器学习复习提纲

西电2023秋季机器学习复习提纲,希望对学弟学妹有帮助

weixin_62083045的博客 5656

斐波那契数列-acwing

斐波那契:a[0] = 0, a[1] = 1, a[n] = a[n-1] + a[n-2],记忆化搜索,记录一些中间值,被记录过了,直接查表。a通过向后滚动n次,移动到第n项,返回a的值。通过,a,b不断向后滚动,求出第n项。递归一秒只能算出3、40项。此时知道第0项和第1项的值,求第2项;跟递推一样,dp的本质应该是递推。所以 return z;

2401_87338545的博客 535

银河麒麟V10+QT6.0中文输入法环境搭建全攻略(附镜像加速技巧)

本文提供了在银河麒麟V10操作系统上为QT6.0搭建中文输入法环境的完整实战指南。文章详细介绍了从系统准备、镜像源优化、QT6安装器获取与加速安装,到编译Fcitx5输入法插件依赖库、深度配置环境变量与项目的全流程。重点分享了使用国内镜像源加速安装的技巧,解决了国产化开发中QT应用无法输入中文的常见难题,旨在帮助开发者快速构建稳定高效的开发环境。

weixin_29204749的博客 393

界面上下固定_基于ANSYS的胶粘结构界面开裂有限元计算

引言:目前工程上主要有螺栓,过盈,焊接和胶粘四种常用的连接方式,本文基于ANSYS Workbench环境,引入内聚力模型来实现对胶粘结构界面开裂失效的计算,文中的界面失效参数为随意给定,不是工程实际测试数据,仅起到演示作用!1.问题的描述如图所示给出了胶粘结构的三维模型,该胶粘结构由上下钢板组成,中间通过胶粘接到一起。(胶不需要建模,其影响主要通过内聚力模型实现)上下板的材料为结构钢,...

weixin_29473667的博客 1万+

AcWing 21. 斐波那契数列(C++)- 动态dp

题目链接:https://www.acwing.com/problem/content/description/19/ 题目如下: class Solution { public: int Fibonacci(int n) { vector<int> result(n+1); //动态规划就是迭代 result[0]=0; result[1]=1; for(int i=2;i<n+1

qq_40467670的博客 158

AI自瞄原理剖析(四)从Yolo推理坐标到屏幕坐标:基于FOV视角与焦距的坐标变换与精准瞄准

从Yolo推理框架得到的坐标到屏幕坐标的转换是一个涉及到FOV视角、焦距以及分辨率的复杂过程。通过数学公式,我们可以将推理框坐标反推为游戏内的实际坐标,并最终映射到屏幕坐标系中。利用这些信息,AI自瞄系统能够精确计算出准星从当前位置移动到敌人位置的距离,实现精准的自动瞄准。通过这种方法,AI自瞄系统能够在不同的游戏环境下灵活应对,提供高度精确的操作体验。在AI自瞄系统中,目标检测仅仅是第一步,获取到预测框的坐标后,我们还需要将这些坐标转换为实际屏幕上的精确位置。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1334

AcWing——递推与递归(Java)

AcWing中的蓝桥杯C++课,我将其中的笔记都记录下来,且将全部代码换成C++,方便各位学Java的同学们一起学习,在蓝桥杯中踊跃拿奖!!!

weixin_55902321的博客 270

LangChain与LangGraph核心区别解析

LangChain与LangGraph是当前大语言模型(LLM)应用开发中两个紧密相关且极具影响力的开源框架。它们源于LangChain AI公司,设计哲学互补,旨在解决不同维度的LLM工程化问题,共同构成了构建复杂智能应用的强大工具集。

weixin_35774598的博客 1921

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

AcWing解题目录(C++)

# 试题名称 思想方法 难度 试题来源 1 A+B 简单 AcWing 2 01背包问题 简单 3 完全背包问题 简单 4 多重背包问题I 简单 5 多重背包问题II 中等 6 多重背包问题...

Zee_Chao的博客 900

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

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

蓝桥杯小白打卡第一天

题目来自于y总的acwing蓝桥杯课程。

m0_73002963的博客 415

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

斐波那契数列的递归,迭代(循环),通项公式三种实现

谓Fibonacci数列是指这样一种数列,它的前两项均为1,从第三项开始各项均为前两项之和。用数学公式表示出来就是: 1 (n=1,2) fib(n)= fib(n-1)+fib(n-2) (n>2) 可以证明斐波那契数列的通项公式为fib(n) = [(1+√5)/2]^n /...

weixin_33709609的博客 1047

C语言:解析斐波那契数列的迭代算法

通过这篇博客,我们详细解析了斐波那契数列的迭代解法。该算法在避免了递归中可能存在的性能问题的同时,通过循环迭代高效地计算出了斐波那契数列的第 `n` 项。这种迭代的思想在解决类似问题时具有一定的通用性,也为我们提供了一种优化递归算法的思路。希望这篇博客能够帮助读者更好地理解和运用迭代解法来解决实际问题。如果有任何问题或建议,请随时留言。

2302_78381559的博客 975

递归、迭代求斐波那契数列

今天给大家分享一下基本算,就是使用递归、迭代求斐波那契数列,

落叶先生 9089

斐波那契数列的递归和迭代实现

本文分析了斐波那契数列的两种实现方法:递归和迭代。递归算法通过自调用实现,代码简洁但效率低下,时间复杂为O(2ⁿ),存在大量重复计算;迭代算法通过循环和状态保存实现,时间复杂度O(n),空间复杂度O(1),性能更优。递归适用于小规模问题,迭代则适合实际应用。两种方法体现了分治与递推的不同算法思想,需根据具体需求选择实现方式。

ftgchtcju的博客 1423

迭代法和递归法求斐波那契数列任一项

斐波那契数列(Fibonacci sequence),又称‌‌:数列的前两项通常是0和1(也有版本以1和1作为初始值)。

2301_79738670的博客 398

求第N个斐波那契数【递归法】【迭代法】

求第N个斐波那契数【递归法】【迭代法】 1. 递归法 将第N个斐波那契数表示为前两个斐波那契数的和,即fibonacci(n-1)+fibonacci(n-2); 通过不断递推到最底层的两个值; 再回归到第N个数。 class Solution { public: int fibonacci(int n) { if(n==1) return 0; else if(n==2) return 1;

Daily Tips 601

关于国庆任务的反思

对于第i+1位的学生,其成绩需要和剩余的n-i-1位同学一起比较,如果成绩高,就留下来继续比较;如果低,就将比较次数归零,取出i+2位继续和剩下的N-I-2各数据比较。现有 n 个同学的高数期中考试成绩,这 n 名同学的编号分别为 1,2,3,...,,编号为 ni 的同学考了 si​ 分,请你找出分数最高的同学的编号并将其输出,若有并列第一,就输出其中最小的编号。2 用数据类型定义变量时也就确定了变量的大小,FLOAT和DOUBLE是小数,其余的都是整数。字符串不可以赋值给变量,需要用数组。

2302_80014326的博客 105

函数递归与迭代(经典斐波那契数)

什么是递归,递归的举例,递归与迭代(求第n个斐波那契数)

2502_91499791的博客 1245
上一篇: AcWing 20. 用两个栈实现队列
下一篇: AcWing 22. 旋转数组的最小数字(二分法)
Zee_Chao
博客等级 码龄11年 168粉丝 135原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值