news 2026/4/27 21:35:22

浅谈:算法中的斐波那契数(六)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
浅谈:算法中的斐波那契数(六)

方法五:矩阵求幂

斐波那契数列矩阵方程:

算法

  • 若 N 小于等于 1,则返回 N。
  • 使用递归函数matrixPower 计算给定矩阵 A 的幂。幂为 N-1,其中 N 是第 N 个 斐波那契数。
  • matrixPower 函数将对 N/2 个斐波那契数进行操作。
  • 在 matrixPower 中,调用 multiply 函数将两个矩阵相乘。
  • 完成计算后,返回 A[0][0] 得到第 N 个斐波那契数。

Java 实现

class Solution { int fib(int N) { if (N <= 1) { return N; } int[][] A = new int[][]{{1, 1}, {1, 0}}; matrixPower(A, N-1); return A[0][0]; } void matrixPower(int[][] A, int N) { if (N <= 1) { return; } matrixPower(A, N/2); multiply(A, A); int[][] B = new int[][]{{1, 1}, {1, 0}}; if (N%2 != 0) { multiply(A, B); } } void multiply(int[][] A, int[][] B) { int x = A[0][0] * B[0][0] + A[0][1] * B[1][0]; int y = A[0][0] * B[0][1] + A[0][1] * B[1][1]; int z = A[1][0] * B[0][0] + A[1][1] * B[1][0]; int w = A[1][0] * B[0][1] + A[1][1] * B[1][1]; A[0][0] = x; A[0][1] = y; A[1][0] = z; A[1][1] = w; } }

复杂度分析

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/26 9:58:48

大模型面试必备03——llama文章精读

llama系列&#xff1a;meta公司旗下 llama1系列 论文地址&#xff1a;https://arxiv.org/pdf/2302.13971 代码地址&#xff1a;https://link.zhihu.com/?targethttps%3A//github.com/facebookresearch/llama 参考博客&#xff1a;https://zhuanlan.zhihu.com/p/632102048 L…

作者头像 李华
网站建设 2026/4/23 17:49:23

高效测试脚本维护:策略与实战技巧

在软件测试领域&#xff0c;测试脚本是自动化测试的基石&#xff0c;但许多团队往往重开发轻维护&#xff0c;导致脚本随着项目演进变得脆弱、难以管理。据统计&#xff0c;自动化测试失败的原因中&#xff0c;高达60%以上源于脚本维护不当。本文旨在为软件测试从业者提供一套实…

作者头像 李华
网站建设 2026/4/20 11:10:03

TikTok多账号风控:找对安全支点,解锁规模化运营

对跨境电商卖家而言&#xff0c;TikTok Shop已经成为重要的增量渠道&#xff0c;账号封禁与IP限制的问题时常出现&#xff0c;当账号突然无法登录&#xff0c;背后往往触发了平台复杂的风控机制。一、封禁逻辑&#xff1a;不止于IP本身TikTok对IP的限制&#xff0c;是其维护平台…

作者头像 李华
网站建设 2026/4/27 11:26:28

汇总12款Word生成PPT工具,哪款更适合日常汇报?

年终汇报难题多&#xff0c;轻竹办公来救场年终岁末&#xff0c;职场人又到了“渡劫”时刻。为了一份年终总结报告&#xff0c;多少人挑灯夜战&#xff0c;对着空白的文档绞尽脑汁&#xff0c;好不容易搭好框架&#xff0c;内容却枯燥乏味&#xff0c;毫无亮点。就算勉强写完了…

作者头像 李华
网站建设 2026/4/23 14:18:24

从零开始:C#回收魔法—深入浅出揭开Dispose与释放模式的神秘面纱

一、什么是Dispose&#xff1f;我们先来看一个简单例子(Net 8)。定义一个实现了Dispose方法的简单对象Defer。然后在控制台中我们执行以下代码。// 定义Defer类型ref struct Defer(Action action) { public void Dispose() > action?.Invoke();} // Main入口static void Ma…

作者头像 李华