Python 实现斐波那契数列

简介: 本文介绍斐波那契数列的Python实现方法,涵盖递归、迭代与动态规划三种方式,分析其时间与空间复杂度,并比较性能差异。适用于算法学习与实际应用,如金融分析、图形学等场景。

Python 实现斐波那契数列

斐波那契数列简介

斐波那契数列(Fibonacci sequence)是一个经典的数学序列,其定义如下:

  • F(0) = 0
  • F(1) = 1
  • F(n) = F(n-1) + F(n-2) (当 n ≥ 2 时)

这个数列的特点是每个数字都是前两个数字之和,数列开始如下:0, 1, 1, 2, 3, 5, 8, 13, 21, 34...

Python 实现方法

1. 递归实现

示例代码 - shift

def fibonacci_recursive(n):
    if n <= 1:
        return n
    else:
        return fibonacci_recursive(n-1) + fibonacci_recursive(n-2)

特点:

  • 代码简洁直观
  • 时间复杂度为 O(2^n),效率较低
  • 适合理解递归概念但不适合大规模计算

2. 迭代实现

示例代码 - shift

def fibonacci_iterative(n):
    a, b = 0, 1
    for _ in range(n):
        a, b = b, a + b
    return a

特点:

  • 时间复杂度为 O(n)
  • 空间复杂度为 O(1)
  • 适合实际应用场景

3. 动态规划实现

示例代码 - shift

def fibonacci_dp(n):
    if n <= 1:
        return n
    dp = [0] * (n + 1)
    dp[1] = 1
    for i in range(2, n + 1):
        dp[i] = dp[i-1] + dp[i-2]
    return dp[n]

特点:

  • 时间复杂度 O(n)
  • 空间复杂度 O(n)
  • 可扩展性强,适合更复杂的动态规划问题

性能比较

当 n=35 时:

  • 递归方法:约 900 万次函数调用,耗时明显
  • 迭代方法:35 次循环,几乎瞬间完成

实际应用场景

  1. 金融分析:黄金分割比计算
  2. 算法设计:动态规划问题
  3. 计算机图形学:自然生长模式模拟
  4. 音乐创作:音符排列组合

优化建议

对于需要多次调用的情况,可以考虑:

  • 使用缓存装饰器(Python 的 @lru_cache)
  • 预计算并存储结果
  • 使用矩阵快速幂算法(时间复杂度 O(log n))

示例代码 - shift

from functools import lru_cache

@lru_cache(maxsize=None)
def fibonacci_cached(n):
    if n <= 1:
        return n
    return fibonacci_cached(n-1) + fibonacci_cached(n-2)
相关文章
|
11月前
|
Python
Python 的基本类型
Python 提供多种内置基本数据类型,包括数值(int、float、complex)、布尔(bool)、字符串(str)、序列(list、tuple、range)、映射(dict)、集合(set、frozenset)及二进制类型(bytes、bytearray、memoryview),还有表示空值的 None。这些类型支持动态类型特性,可灵活组合构建复杂结构,是 Python 编程的基础。
966 10
|
2月前
|
人工智能 编解码 安全
我把电脑外包给豆包后,效率飞升!【附教程】
看完这篇,你将比99%的人更会用豆包~
591 0
|
11月前
|
C++ Python
Qt Theme —— 纯 qss 的 Qt 主题
Qt Theme 是一个纯 QSS 实现的 Qt 主题库,支持 C++ 与 Python(PyQt/PySide),提供多种风格与配色,轻松美化界面。可通过 pip 安装或导出资源嵌入项目,兼容 WebAssembly 在线预览。
991 109
|
Web App开发
Web QQ自动强制加好友代码
也许见过强行聊天的代码:  tencent://Message/?Uin=574201314&websiteName=www.oicqzone.com&Menu=yes   但是你应该不知道,还有强行加好友的代码: tencent://AddContact/?fromId=45&f...
7109 0
|
10月前
|
安全 Cloud Native Serverless
2025数字员工技术选型白皮书:阿里云/亚马逊等5款产品云原生能力实测
本文深度评测阿里云、亚马逊、科大讯飞、玄晶引擎、安恒五款数字员工,围绕架构兼容性、开发友好度、性能稳定性三大维度,结合实测数据与企业案例,为开发者提供选型指南与避坑建议。
1151 5
|
10月前
|
人工智能 数据可视化 安全
阿里云建站:AI万小智,万小智AI建站送.cn域名
万小智是阿里云推出的AI数字员工,面向企业及个人提供AI驱动的自助建站服务。支持对话建站、AI生成配图与内容,预置千套模板,多端适配,可视化拖拽操作,集成云服务器、数据库、CDN等云服务,保障安全高效。活动期间,购建站产品送.CN域名首年免费,新客首年仅99元起,助力用户低成本快速搭建专业官网并实现智能运营。
|
7月前
|
缓存 安全 编译器
C语言「volatile 关键字」:被90%开发者误解的硬件同步原语
`volatile` 是C语言中至关重要的硬件同步原语,核心作用是禁止编译器对变量进行优化:每次读写都必须真实访问内存,确保能感知硬件、中断或其它线程的“意外修改”。它非为多线程而生,却是嵌入式、驱动和底层开发的基石。
2072 4
|
10月前
|
人工智能 图形学
2025年度数字人公司排名推荐:厂商技术实力、优势、定位全方位对比
现在的AI虚拟技术发展越来越普遍,涉足数字人相关内容的公司层出不穷,但质量上参差不齐。对于企业而言,若需专门对接服务商制作数字人视频,技术过硬、经验丰富的公司才是可靠之选——这类公司能精准匹配企业场景需求,输出高质量数字人内容。接下来,为您盘点2025年值得关注的优秀数字人公司。
|
10月前
|
存储 运维 资源调度
JMeter自搭与商用压测平台:效率成本对比及最优方案推荐
文章对比了JMeter自搭与商用压测平台的效率与成本,分析两者在灵活性、技术门槛、成本投入等方面的差异。指出自建适合技术强的团队,商用适合资源有限的中小团队,并给出结合业务需求、技术能力等因素选择最优方案的建议。

热门文章

最新文章