《笔记》青蛙跳台阶——斐波那契数列
斐波那契数列
斐波那契数列(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)的基本概念 实际应用中的马尔科夫性 自然语言处理: 在词性…...
OpenClaw任务编排:Qwen3-4B-Thinking-2507-GPT-5-Codex-Distill-GGUF处理依赖型工作流
OpenClaw任务编排:Qwen3-4B-Thinking-2507-GPT-5-Codex-Distill-GGUF处理依赖型工作流 1. 为什么需要任务编排 去年夏天,我接手了一个数据分析项目,需要定期从十几个网站抓取数据,清洗后生成分析报告,再邮件发送给团…...
字节跳动开源Coze后,个人开发者如何快速上手?保姆级教程来了
字节跳动开源Coze实战指南:从零构建AI智能体的完整路径 当字节跳动宣布将Coze平台全面开源时,整个开发者社区为之振奋。这个被称作"AI智能体全栈工厂"的平台,如今终于揭开了神秘面纱,让个人开发者能够深入探索其技术内核…...
Claude Code 接入 DeepSeek、GLM、MiniMax 等国产大模型,保姆级教程!
每天免费领 1亿 Token,白嫖DeepSeek、GLM、MiniMax、Kimi等大模型! 这份指南是专门为那些“只想赶紧上手开干”的朋友准备的。 咱们不整那些虚头巴脑的理论,直接帮你搞定这几件事: 怎么把 Claude Code 装好如何确定它已经能跑通…...
ncmdumpGUI高效使用指南:NCM文件转换完全掌握
ncmdumpGUI高效使用指南:NCM文件转换完全掌握 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 一、建立NCM转换认知体系 1.1 理解NCM文件加密机制 …...
Magisk Alpha深度隐匿实战:从Momo检测到BL列表的终极配置
1. 为什么需要深度隐匿Root环境? 最近两年,银行类APP和游戏厂商的检测手段越来越严格。我去年用某银行APP时,明明Root已经隐藏得很好,结果转账时突然弹出"设备环境异常"的提示,直接中断交易。后来才知道是新…...
利用快马AI快速生成Android Studio天气预报应用原型
最近在尝试开发一个简单的天气预报应用,发现用传统方式从零开始搭建Android项目框架特别耗时。特别是Gradle配置和各种依赖项的引入,经常要反复调试。后来尝试了InsCode(快马)平台,发现它的AI生成功能能极大提升原型开发效率,这里…...
5分钟搭建Python微信机器人:实现自动化消息处理的终极指南
5分钟搭建Python微信机器人:实现自动化消息处理的终极指南 【免费下载链接】WechatBot 项目地址: https://gitcode.com/gh_mirrors/wechatb/WechatBot 在数字化办公时代,微信已成为职场沟通的主要渠道,但重复性的消息处理工作消耗了大…...
解放你的文件夹:智能文件整理Agent,让杂乱文件一键归位
核心功能:不止是“按类型分类”市面上很多文件整理工具只能简单按后缀名归类,但实际使用中我们的需求远不止于此——比如按项目维度、按时间前缀、按业务场景整理,甚至要区分大文件/近期文件避免误操作。这款工具的核心亮点在于:1…...
告别重复造轮子:用快马AI一键生成web后台管理CRUD模块代码
告别重复造轮子:用快马AI一键生成web后台管理CRUD模块代码 最近在开发一个电商后台管理系统时,我发现大部分时间都花在了重复性的CRUD(增删改查)代码编写上。产品管理模块需要列表展示、分页查询、条件筛选、表单验证等一系列标准…...
看BEYOND REALITY Z-Image如何生成电影级人像:高清作品案例大赏
看BEYOND REALITY Z-Image如何生成电影级人像:高清作品案例大赏 你有没有想过,用AI生成一张人像照片,能逼真到什么程度?是那种一眼就能看出“AI味”的塑料感,还是无限接近真实胶片摄影的细腻质感?今天&…...
