https://www.zhihu.com/question/28062458

http://blog.csdn.net/hikean/article/details/9749391

对于Fibonacci数列,1,1,2,3,5,8,13,21...

   F(0) = 1, F(1) = 1, F(i) = F(i-1) + F(i-2) 求解第n项。
1、递归
long fib(int n)
{if (n == 0 || n == 1){return 1;}return fib(n-1) + fib(n-2);
}

    这是最好写,也是效率最低的方法,时间复杂度是指数级别的。
2、遍历
long fib(int n)
{if (n == 0 || n == 1){return 1;}vector <long> fibs(2, 1);for (int i = 2; i <= n; ++i){fibs.push_back(fibs[i-1] + fibs[i-2]);}return fibs[n];
}

    这个方法也是很容易想到的,时间复杂度是 O(n), 空间复杂度也是 O(n)。
3、遍历优化版
    fibs[n]只和前两个元素相关,因此任意时刻我们只要有前两项就可以了。这样空间复杂度可以做到 O(1),我们用个循环数组就可以了。
long fib(int n)
{if (n == 0 || n == 1){return 1;}int fib[3];fib[0] = fib[1] = 1;int idx = 1;for (int i = 2; i <= n; ++i){idx = (idx + 1) % 3;fib[idx] = fib[(idx + 2)%3] + fib[(idx + 1)%3];}return fib[idx];
}

4、矩阵相乘
    把一维问题拉到二维。

所以,

    现在问题是如何快速计算一个矩阵的n次方。这里可以利用A^n = A^(n/2)*A^(n/2) * (n % 2 == 1 ? A : I)进行分治。
matrix power(matrix A, int n)
{matrix ans = I;while(n > 0){if (n % 2 == 1){ans *= A;}A *= A;n /= 2;}return ans;
}

这个算法的时间复杂度是O(logN).

5、特征值分解

对于矩阵的 n 次方求解,可以通过矩阵的特征值分解来完成。过程如下:

6、差分方程求解
    如果了解差分方程,那么这个解析解就很容易得到了。

转载于:https://www.cnblogs.com/noryes/p/5716634.html

Math: Fibonacci相关推荐

  1. 【JS】详解JS精度丢失原理以及业务中价格计算引入数学库 Math.js的使用场景

    一.JS为什么会出现精度丢失问题 1.JS基本数据类型 Number 在内存中是怎么存储的? JS中的Number类型使用的是双精度浮点型,也就是其他语言中的double类型.在计算机内存中,单精度数 ...

  2. 30-seconds-code——math

    英文文章来源于:https://github.com/Chalarangelo/30-seconds-of-code/blob/master/README.md Math 数组求和 (arraySum ...

  3. C语言——球体体积判断素数用递归计算Fibonacci数列

    1.编写求圆球体体积的函数(体积V=4/3*π*R3),在主函数里输入球体半径R(使用Scanf()函数通过键盘输入)并调用该函数显示当R=3时球体体积. #include<stdio.h> ...

  4. java斐波那契查找_详解Java Fibonacci Search斐波那契搜索算法代码实现

    一, 斐波那契搜索算法简述 斐波那契搜索(Fibonacci search) ,又称斐波那契查找,是区间中单峰函数的搜索技术. 斐波那契搜索采用分而治之的方法,其中我们按照斐波那契数列对元素进行不均等 ...

  5. 广义Fibonacci数列找循环节

    今天将来学习如何求广义Fibonacci数列的循环节. 问题:给定,满足,求的循 环节长度. 来源:http://acdreamoj.sinaapp.com/ 1075题   分析:我们知道矩阵的递推 ...

  6. 从蓝桥杯来谈Fibonacci数列

    2014年蓝桥杯的第九题是这样描述的:     给定Fibonacci数列F[],其中,,求表达式                  的值.其中 在讲解这道题之前,我们先来看一个简单版的.题目如下: ...

  7. fibonacci数列的性质(ZOJ3707)

    题目:Calculate Prime S   题意: Define S[n] as the number of subsets of {1, 2, ...,n} that contain no con ...

  8. Fibonacci Knapsack

    http://acm.uestc.edu.cn/problem.php?pid=1489&cid=164 其实就是用搜索做0/1背包 不要被Fibonacci 唬住了,没什么用.,.....这 ...

  9. 面试题:Fibonacci数列

    题目描述:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0). 方法1:递归 public class Solution {public int Fi ...

最新文章

  1. WINDOWS SERVER 2003 组策略应用
  2. jQuery(三):样式操作
  3. 卷积核_漫画:卷积神经网络中的卷积核到底是什么?
  4. Chrome的插件扩展程序安装目录是什么?在哪个文件夹?
  5. POI3.8解决导出大数据量excel文件时内存溢出的问题
  6. Looper中的消息队列处理机制
  7. 《Flume日志收集与MapReduce模式》一2.1 下载Flume
  8. hosts文件修改,文件类型修改
  9. Why 自动化交易/程序化交易/量化交易?交易软件有哪些?
  10. 爱淘宝手机版分类导航菜单弹出效果设计
  11. TCR-T细胞治疗最新研究进展(2021年2月)
  12. 如何写出一份完美的BP(商业计划书)?
  13. 定时器输出的PWM频率范围及占空比精度
  14. Mysql-8.0.29-源码编译安装
  15. 路由器和交换机的区别?
  16. ubuntu mysql密码忘记了怎么办,ubuntu怎么查看mysql密码
  17. 用html写一首古诗,怎么用html/css写一首古诗
  18. 手动实现最简单的Android热修复(最新最全详细小白教程)
  19. 苹果手机来电归属地_工信部:手机号归属地不会取消、否则增大诈骗风险-工信部,手机号,归属地,诈骗 ——快科技(驱动之家旗下媒体)-...
  20. 简述什么是人工神经网络,人工神经网络基本构成

热门文章

  1. pytorch torch.nn.MSELoss
  2. pytorch torchvision.transforms.ToTensor
  3. mysql limitorderby
  4. tensorflow GPU环境配置 Nvidia+cuda+cudnn
  5. python 控制语句
  6. 数据算法之折半插入排序(binInsertSort)的Java实现
  7. .wav格式的声音文件怎么变成matlab 中的.mat文件
  8. 使用dig或nslookup指定dns服务器查询域名解析
  9. Nginx学习总结(8)——Nginx服务器详解
  10. linux top功能,[每日一题]说说Linux top命令的功能和用法