《笔记》青蛙跳台阶——斐波那契数列
斐波那契数列
斐波那契数列(Fibonacci Sequence)是一个经典的数学数列,其特点是每一项都是前两项的和。数列的前两项通常定义为 0 和 1(或 1 和 1),后续每一项都是前两项的和。
斐波那契数列的定义
斐波那契数列的定义如下:
- ( F(0) = 0 )
- ( F(1) = 1 )
- 对于 ( n >= 2 ),( F(n) = F(n-1) + F(n-2) )
数列的前几项为:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, …
斐波那契数列的性质

斐波那契数列的应用
-
自然界中的斐波那契数列:
- 植物的叶子排列、花瓣数量、松果的鳞片等都与斐波那契数列有关。
- 例如,向日葵的花瓣数量通常是斐波那契数列中的某个数。
-
计算机科学:
- 斐波那契数列常用于算法设计和动态规划问题。
- 例如,青蛙跳台阶问题、爬楼梯问题等。
-
金融领域:
- 斐波那契数列在技术分析中用于预测股票价格的支撑位和阻力位。
-
艺术与设计:
- 黄金分割比例(与斐波那契数列相关)被广泛应用于建筑、绘画和设计中。
斐波那契数列的实现
以下是斐波那契数列的几种常见实现方式:
1. 递归实现
def fibonacci(n):if n == 0:return 0if n == 1:return 1return fibonacci(n - 1) + fibonacci(n - 2)
测试
print(fibonacci(10)) # 输出 55
- 动态规划实现
复制def fibonacci(n):if n == 0:return 0if n == 1:return 1dp = [0] * (n + 1)dp[0] = 0dp[1] = 1for i in range(2, n + 1):dp[i] = dp[i - 1] + dp[i - 2]return dp[n]
测试
print(fibonacci(10)) # 输出 55
优点:
时间复杂度为 O(n),空间复杂度为 O(n)。
- 优化空间复杂度的动态规划
def fibonacci(n):if n == 0:return 0if n == 1:return 1prev1 = 0 # F(n-2)prev2 = 1 # F(n-1)for i in range(2, n + 1):current = prev1 + prev2prev1 = prev2prev2 = currentreturn prev2
测试
print(fibonacci(10)) # 输出 55
优点:
时间复杂度为 O(n),空间复杂度为 O(1)。
- 矩阵快速幂实现
import numpy as npdef fibonacci(n):if n == 0:return 0def matrix_power(matrix, power):result = np.identity(2, dtype=object)while power > 0:if power % 2 == 1:result = np.dot(result, matrix)matrix = np.dot(matrix, matrix)power = power // 2return resultmatrix = np.array([[1, 1], [1, 0]], dtype=object)result_matrix = matrix_power(matrix, n - 1)return result_matrix[0][0]
测试
print(fibonacci(10)) # 输出 55
优点:
时间复杂度为 O(logn),适合计算大数的斐波那契数列。
总结
斐波那契数列是一个经典的数学问题,具有广泛的应用场景。通过递归、动态规划、矩阵快速幂等方法,可以高效地计算斐波那契数列的值。在实际应用中,动态规划和矩阵快速幂是最常用的方法。
相关文章:
《笔记》青蛙跳台阶——斐波那契数列
斐波那契数列 斐波那契数列(Fibonacci Sequence)是一个经典的数学数列,其特点是每一项都是前两项的和。数列的前两项通常定义为 0 和 1(或 1 和 1),后续每一项都是前两项的和。 斐波那契数列的定义 斐波那…...
SpringBoot3动态切换数据源
背景 随着公司业务战略的发展,相关的软件服务也逐步的向多元化转变,之前是单纯的拿项目,赚人工钱,现在开始向产品化\服务化转变。最近雷袭又接到一项新的挑战:了解SAAS模型,考虑怎么将公司的产品转换成多租…...
OSPF - 特殊区域
OSPF路由器需要同时维护域内路由、域间路由、外部路由信息数据库。当网络规模不断扩大时,LSDB规模也不断增长。如果某区域不需要为其他区域提供流量中转服务,那么该区域内的路由器就没有必要维护本区域外的链路状态数据库。 OSPF通过划分区域可以减少网…...
Linux 系统下磁盘相关指令:df、du、fdisk、lsblk
文章目录 I df、du、fdisk、lsblk指令df命令用于显示文件系统的磁盘空间使用情况du命令用于估算目录或文件的磁盘空间使用情况fdisk命令用于对磁盘进行分区操作lsblk指令查看设备信息II 应用du估算目录或文件的磁盘空间使用情况lsblk查看服务器上查看硬盘个数III 知识扩展磁盘阵…...
基于单片机的肺功能MVV简单测算
肺功能MVV一般是指肺部每分钟的最大通气量。 MVV本身是最大值的英文缩写,在临床上,肺功能MVV表示肺部每分钟最大通气量,用以衡量气道的通畅度,以及肺部和胸廓的弹性、呼吸肌的力量。 肺部每分钟的最大通气量的参考值男性与女性之…...
如何用Python编程实现自动整理XML发票文件
传统手工整理发票耗时费力且易出错,而 XML 格式发票因其结构化、标准化的特点,为实现发票的自动化整理与保存提供了可能。本文将详细探讨用python来编程实现对 XML 格式的发票进行自动整理。 一、XML 格式发票的特点 结构化数据:XML 格式发票…...
腾讯云AI代码助手编程挑战赛-百事一点通
作品简介 百事通问答是一款功能强大的智能问答工具。它依托海量知识储备,无论你是想了解生活窍门、学习难点,还是工作中的专业疑惑,只需输入问题,就能瞬间获得精准解答,以简洁易懂的方式呈现,随时随地为你…...
Spring学习笔记1
目录 1 什么是spring2 spring的优势3 IOC的概念和作用3.1 无参数构造函数的实例化方式3.2 使用工厂中的普通方法实例化对象 4 Bean4.1 Bean相关概念4.2 Bean对象的作用范围 5 DI5.1 构造函数注入5.2 set方法注入5.3 复杂类型数据注入5.4 基于注解的IOC5.4.1 包扫描5.4.2 Compon…...
LeetCode 2185. Counting Words With a Given Prefix
🔗 https://leetcode.com/problems/counting-words-with-a-given-prefix 题目 给一个字符串数组,返回其中前缀为 pref 的个数 思路 模拟 代码 class Solution { public:int prefixCount(vector<string>& words, string pref) {int count…...
图漾相机基础操作
1.客户端概述 1.1 简介 PercipioViewer是图漾基于Percipio Camport SDK开发的一款看图软件,可实时预览相机输出的深度图、彩色图、IR红外图和点云图,并保存对应数据,还支持查看设备基础信息,在线修改gain、曝光等各种调节相机成像的参数功能…...
前端开发中页面优化的方法
前端页面优化是指通过改进网页的加载速度、提高用户体验和SEO优化等手段来优化页面性能的过程。以下是一些常见的前端页面优化方法: 压缩和合并文件:通过压缩CSS和JavaScript文件,并将多个文件合并成一个文件,减少网络传输和HTTP请…...
Qt QDockWidget详解以及例程
Qt QDockWidget详解以及例程 引言一、基本用法二、深入了解2.1 窗口功能相关2.2 停靠区域限制2.3 在主窗体布局 引言 QDockWidget类提供了一个可以停靠在QMainWindow内的小窗口 (理论上可以在QMainWindow中任意排列),也可以作为QMainWindow上的顶级窗口浮动 (类似一…...
机器学习之贝叶斯分类器和混淆矩阵可视化
贝叶斯分类器 目录 贝叶斯分类器1 贝叶斯分类器1.1 概念1.2算法理解1.3 算法导入1.4 函数 2 混淆矩阵可视化2.1 概念2.2 理解2.3 函数导入2.4 函数及参数2.5 绘制函数 3 实际预测3.1 数据及理解3.2 代码测试 1 贝叶斯分类器 1.1 概念 贝叶斯分类器是基于贝叶斯定理构建的分类…...
关于大数据的基础知识(一)——定义特征结构要素
成长路上不孤单😊😊😊😊😊😊 【14后😊///计算机爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于大数据的基础知识(一&a…...
2025 GitCode 开发者冬日嘉年华:AI 与开源的深度交融之旅
在科技的浪潮中,AI 技术与开源探索的火花不断碰撞,催生出无限可能。2025 年 1 月 4 日,由 GitCode 联合 CSDN COC 城市开发者社区精心打造的开年首场开发者活动:冬日嘉年华在北京中关村 • 鼎好 DH3-A 座 22 层盛大举行࿰…...
【MyBatis-Plus 进阶功能】开发中常用场景剖析
MyBatis-Plus(MP)除了封装常见的 CRUD 操作,还提供了一些高级功能,进一步简化复杂场景下的开发工作。本文将逐一讲解 逻辑删除、自动填充、多表关联查询的原理与使用方式,让你快速掌握这些技巧! 一、逻辑删…...
【C++/控制台】2048小游戏
源代码: #include <iostream> #include <windows.h> #include <stdio.h> #include <math.h> #include <stdlib.h> #include <conio.h> #include <time.h>// #define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME)…...
Linux 中 top 命令的使用与实例解读
目录 Linux 中 top 命令的使用与实例解读一、top 命令参数二、输出字段含义(一)系统信息(二)任务信息(三)CPU 信息(四)内存信息 三、实例解读系统信息任务信息CPU信息内存信息进程列…...
C++ STL 中的 `unordered_map` 和 `unordered_set` 总结
1. unordered_map unordered_map 是一个基于哈希表实现的容器,存储键值对(key-value),每个键必须唯一,可以快速插入、删除、查找。 基本特性 存储结构:键值对 (key-value)。键唯一性:每个键在…...
机器学习基础-概率图模型
(一阶)马尔科夫模型的基本概念 状态、状态转换概率、初始概率 状态转移矩阵的基本概念 隐马尔可夫模型(HMM)的基本概念 条件随机场(CRF)的基本概念 实际应用中的马尔科夫性 自然语言处理: 在词性…...
不知道怎么挖漏洞?吐血整理40个网络安全漏洞挖掘姿势,看完不信你还挖不到
各位靓仔,搞网络安全,就像在雷区蹦迪,一不小心就BoomShakalaka!Web漏洞这玩意儿,说白了就是信任危机 验证掉链子。开发者们啊,总是对用户输入、权限边界和系统交互爱的太深,结果翻车了…...
仓库盘点、物流交接?用UniApp+PDA扫码提升效率的实战配置与避坑指南
UniAppPDA扫码在仓储物流中的实战配置与效率提升指南 当仓储管理员小李第一次使用传统扫码枪配合PC系统进行月度盘点时,他需要反复核对Excel表格与实物位置,8小时的工作量常常延长到深夜。而现在,通过UniApp开发的移动端应用配合工业级PDA设备…...
CANN/asc-devkit协作组shfl函数
shfl 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.com/cann/…...
CacheTool OPcache管理:如何优化PHP字节码缓存性能的终极指南
CacheTool OPcache管理:如何优化PHP字节码缓存性能的终极指南 【免费下载链接】cachetool CLI App and library to manage apc & opcache. 项目地址: https://gitcode.com/gh_mirrors/ca/cachetool 你是否曾为PHP应用性能优化而烦恼?…...
瑞芯微RK3588核心板规格书,详细参数配置,定位ARM高端AIOT智能模组,板对板连接器320Pin 间距0.5 B to B连接器
触觉智能研发的瑞芯微RK3588核心板,板对板连接器320Pin 间距0.5 B to B连接器,型号简写SOM3588-V1,在CSDN平台留下规格书方便大家查看。1. 产品概述1.1 IDO-SOM3588-V1适用范围IDO-SOM3588-V1核心板适用于工业主机,边缘计算网关、…...
15天学会AI应用开发(一)搭建AI大模型应用开发环境
AI大模型时代来了,程序员们纷纷入坑AI应用开发,可是苦于AI教程良莠不齐,往往花费了大量时间精力和金钱,却仍然过其门而不入。 有鉴于此,博主开始连载AI应用开发教程《15天学会AI应用开发》,帮助大家快速掌…...
保姆级教程:在ROS2 Humble上,用Orbbec Astra Pro深度相机搞定单目标定(附常见镜像问题解决)
保姆级教程:ROS2 Humble与Orbbec Astra Pro深度相机单目标定实战指南 深度相机在机器人视觉、三维重建等领域扮演着关键角色,而精确的相机标定则是确保数据可靠性的第一步。本文将手把手带你完成Orbbec Astra Pro在ROS2 Humble环境下的单目标定全流程&am…...
MCP (Model Context Protocol) 实战指南:从零搭建 AI Agent 工具生态系统
引言 2025年底 Anthropic 推出的 Model Context Protocol (MCP) 正在彻底改变 AI Agent 与外部工具的交互方式。截至 2026年5月,MCP 生态系统已拥有超过 3000 个开源 Server 实现,成为连接 LLM 与现实世界数据的标准协议。 本文将深入讲解 MCP 的核心原…...
聚焦新型有效成分,守护爱宠健康
养宠过程中,用药安全是守护宠物健康的核心关键。多数养宠人选药时,常只关注品牌、价格或口碑,却忽略了药物有效成分这一核心根本。随着宠物医药技术迭代升级,多款新型专用药用成分落地应用,凭借精准、安全、低耐药的优…...
告别黑框!树莓派4B远程桌面完整指南:从VNC配置到RealVNC/XRDP方案选择与优化
树莓派4B远程桌面终极方案:告别黑框与卡顿的实战指南 对于许多树莓派开发者而言,那个令人沮丧的黑色方框已经成为远程连接体验的代名词。当你满怀期待地输入IP地址,等待的却是一个无法操作的空白界面,这种挫败感足以让任何人抓狂。…...
