序:

在OI比赛中,很多情况下我们可以能通过打表(找规律)或者某些方式发现一个递归式。

例如:f(n) = f(n - 1)+f(n - 2),(斐波那契数列)。

通常情况下,我们计算f(n)的时间复杂度就是O(n)(分别计算f(1), f(2) ... f(n - 1)).

但是当n很大又或者还有其他处理的复杂度一叠加便会超时。

如果不学习矩阵乘法优化的话,我们恐怕永远不会想到计算递推式还可以进行优化。

实际上利用矩阵乘法,我们可以将O(n)的计算递归式的复杂度降至O(logn)。

优化递归式的特征

形如f(n) = a1 * f(n - 1) + a2 * f(n - 2) + ... + ak * f(n - k)+c (c为常数)

本文讨论的范畴

形如 f(n) = f(n-1) + f(n-2) + .. + f(n-k) 的递归式(1)

形如f(n) = a1 * f(n-1) + a2 * f(n-2) + .. + ak * f(n-k) 的递归式(2)

形如f(n) = a1 * f(n-1) + a2 * f(n-2) + .. + ak * f(n-k) + c 的递归式(3)

实际上理解了最简单的第一个递归式的原理,就很容易理解后面的两种情况。每个前式都是后式的一种特殊情况。

理论基础

首先给出斐波那契数列求第n项的O(logn)的做法,由它引出原理。

已知 :

f(n) = f(n -1) + f(n - 2); -- (1)

f(n - 1) =

矩阵乘法 递归 优化 c语言,矩阵乘法优化递归式相关推荐

  1. 乘法口诀表c语言算法,乘法口诀表,C语言实现

    ▲C语言实现乘法口诀表的输出 ①正三角输出 #include int main() { int i, j = 0; for (i = 1; i <= 9; i++) { for (j = 1;  ...

  2. 在c语言中允许函数递归调用,c语言允许函数的递归调用吗

    c语言允许函数的递归调用吗 允许.C语言中的函数直接或间接调用自己的过程叫递归. 一.递归的两个必要条件 1.存在限制条件,当满足这个条件时,递归便不再继续. 2.每次递归调用之后越来越接近这个限制条 ...

  3. c语言矩阵乘法优化,c语言矩阵相乘

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 程序清单 #include&nbsp int&nbspmain(void) { &nbsp&nbsp&nbsp&a ...

  4. 汉字版乘法口诀表c语言,九九乘法口诀表(汉字版)

    <九九乘法口诀表(汉字版)>由会员分享,可在线阅读,更多相关<九九乘法口诀表(汉字版)(2页珍藏版)>请在人人文库网上搜索. 1.九九乘法表(汉字)一一得到一个一.二.二一.三 ...

  5. c语言矩阵乘积的几,c语言矩阵相乘

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 程序清单 #include&nbsp int&nbspmain(void) { &nbsp&nbsp&nbsp&a ...

  6. c语言编程矩阵乘积的程序,c语言矩阵相乘

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 程序清单 #include&nbsp int&nbspmain(void) { &nbsp&nbsp&nbsp&a ...

  7. C++两个函数可以相互递归吗_C语言(7)- 递归

    (本文为原创,版权归作者所有) 递归(Recursion) 递归是一种计算方法,它的每一步计算都可以被分解为更小规模的相同的计算,因此一个问题可以通过不断重复的分解来解决.一个典型的例子是计算阶乘N! ...

  8. c语言以顺序结构存储的二叉树的非递归遍历,C语言二叉树的非递归遍历实例分析...

    本文以实例形式讲述了C语言实现二叉树的非递归遍历方法.是数据结构与算法设计中常用的技巧.分享给大家供大家参考.具体方法如下: 先序遍历: void preOrder(Node *p) //非递归 { ...

  9. c语言斐波那契数列递归数组,C语言数据结构学习:递归之斐波那契数列

    自己对递归还是不太熟练,于是做的时候就很吃力,就是翻棋子直到棋盘上所有棋子的颜色一样为止,求最少翻多少次,方法是枚举递归.然后就打算先做另一道递归的题(从数组中取出n个元素的组合),但是同样在递归的问 ...

最新文章

  1. szu 寒训复习day #4数论入门详解[修改]用Mardown再改了一下
  2. 小程序web开发框架-weweb介绍
  3. android PreferenceActivity详解
  4. 输出毫秒_自学单片机第十三篇上:单点输出
  5. 基于阿里云实现游戏数据运营(附Demo)
  6. docker(应用容器引擎)
  7. PCI-E 5.0标准公布:速度再次翻番达32GT/s
  8. Everything软件配置
  9. 解决uniapp运行到微信开发者工具报 [微信小程序开发者工具] [error] IDE service port disabled. To use CLI Call错误问题
  10. 联想怎么进入linux界面,联想(Lenovo)为何重返Linux桌面?
  11. 迅雷xware android,迅雷固件Xware
  12. eclipse安装WTP部署WEB项目
  13. 教程:个人深度学习工作站配置指南
  14. hdu-2072 单词数(“水”解法)
  15. 对拉勾网数据分析职位做数据分析
  16. android 批量安装apk,如何一键批量安装APP应用apk安装包?
  17. 干支纪年法简便算法_不用万年历快速推算日柱干支法
  18. VUE 爬坑之旅 -- vue 项目中将简体转换为繁体
  19. python入门之字符串索引,切片
  20. 带桌面推送Ai智能客服系统在线客服源码

热门文章

  1. 【传智播客郑州】90后大学生到传智播客郑州校区追梦未来
  2. python大数据可视化分析淘宝商品,开专卖店不行啊
  3. Linux驱动bootloader之UEFI(Unified extensible firmware interface)系统一——初识UEFI
  4. c语言一个按键控制1个灯的亮灭,51 单片机:按键控制灯亮灭和闪烁
  5. ASP.NET 谨用 async/await
  6. 【免积分】斯坦福大学2021年度AI指数报告PDF完整版
  7. 淘宝流量红利减少 淘品牌急寻突围路径
  8. zzulioj 1191: 数星星(结构体专题)
  9. wpl计算方法_【数据结构】树的应用-计算哈夫曼树的WPL值
  10. 快应用官方IDE使用说明