当前位置: 首页 > news >正文

Python小练习系列 Vol.2:斐波那契数列的三种实现方式(从低效到高效)

🧠 Python小练习系列 Vol.2:斐波那契数列的三种实现方式(从低效到高效)

👋 欢迎继续关注 Python 小练习!本期我们来聊聊最经典的算法之一——斐波那契数列,通过三种方式实现,深入体会效率的提升过程!

汉诺塔演示


🧩 一、题目简介

斐波那契数列(Fibonacci Sequence)是一个非常经典的递推数列,其定义如下:

F(0) = 0,F(1) = 1,F(n) = F(n-1) + F(n-2)(n ≥ 2)

这个数列在数学、算法、面试题中都经常出现,我们将用三种方式来实现它,并对比它们的优缺点。


🧠 二、三种实现方式对比

实现方式思路简介时间复杂度优缺点
递归直接按照数学定义写递归函数O(2^n)简洁但效率极低
迭代从底向上用两个变量循环推导O(n)快速,推荐
记忆化递归加缓存避免重复计算O(n)易读 + 高效,兼具递归风格

👨‍💻 三、Python代码实现

方式一:朴素递归(不推荐)

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

📌 缺点:存在大量重复计算,效率指数级下降。


方式二:迭代法(推荐)

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

✅ 优点:空间和时间效率都很好,最适合生产场景。


方式三:记忆化递归(递归 + 缓存)

def fib_memo(n, memo={}):
    if n in memo:
        return memo[n]
    if n <= 1:
        return n
    memo[n] = fib_memo(n-1, memo) + fib_memo(n-2, memo)
    return memo[n]

✅ 优点:保留递归思维的同时极大提升效率!


🔍 四、输出示例

print(fib_recursive(5))    # 输出 5
print(fib_iterative(5))    # 输出 5
print(fib_memo(5))         # 输出 5

💡 五、进阶思考

  • 🔄 使用 functools.lru_cache 实现自动记忆化
  • 🧵 用生成器生成无限斐波那契流(配合 yield
  • 🧮 如何用矩阵快速幂实现斐波那契?(面试常见)

❤️ 结语

递归虽优雅,但效率也是工程实践的生命线!

📌 下一期预告:生成有效括号组合(回溯 + DFS)


👉 点个赞 👍 + 收藏 🌟,持续更新更有料的 Python 实战题!

相关文章:

  • Git项目要改变仓库地址
  • Windows .gitignore文件不生效的情况排查
  • 实现类今日头条主界面:ViewPager与TabLayout深度整合
  • es6的箭头函数与普通函数的区别,箭头函数的this通常指向哪里,箭头函数可以用作构造函数吗?
  • 如何在 vue 渲染百万行数据,vxe-table 渲染百万行数据性能对比,超大量百万级表格渲染
  • mapbox基础,加载popup弹出窗
  • Python+requests实现接口自动化测试框架
  • 【PyTorch】
  • 如何利用AI智能生成PPT提升工作效率
  • SD-WAN海外专线服务商选择指南
  • 泛目录程序——2025年AI多功能站群系统技术演进:无极架构的分布式智能与多模态
  • Vivado HLS 优化指令详解
  • 【Tauri2】005——tauri::command属性与invoke函数
  • 【C++篇】C++入门基础(二)
  • Web3.0合约安全:重入攻击防御方案
  • JavaScript 中Object.assign()和展开运算符在对象合并时的区别,各自的适用场景是什么?
  • Spring与Mybatis整合
  • DeepSeek(14):DeepSeek 模型微调
  • Go 语言标准库中sort模块详细功能介绍与示例
  • 为什么 PPO 概率计算适合连续动作
  • 把自己做的网站发布/ip域名查询网
  • 中山网站软件/西安网络推广外包公司
  • 如何建立自己的免费网站/广州seo网站推广
  • 简述网站的制作流程/游戏推广赚佣金平台
  • 非认证公众号wordpress/seo外链在线工具
  • 利用云盘做网站/网站关键词怎样优化