斐波那契数列的实用解法
来源:互联网 发布:平安资管 待遇 知乎 编辑:程序博客网 时间:2024/06/06 16:41
定义:
斐波那契数列的解法有好多种,但是最常见的,也是最简单易懂的就是递归,然而动态规划也是可以解决这类问题。
解法一:递归
这种方法是最直观,也是最容易懂得的一种写法。但是这种方法存在着严重的效率问题。
long long fib(size_t x){if(n < =0){return 0;;}if(n == 1){return 1;}return fib(n-1)+fib(n-2);}简单分析一波,当我们想求得f(10),需要首先求的f(9)和f(8),同样的f(9)也是需要求的f(8)和f(7)...这种方法存在着很大的依赖关系,这就导致在计算过程中我们会重复计算很多的相同的值,并且这种重复的值会根据x的增大而成指数增长。
由于递归也有其本身的限制(由于递归需要系统堆栈,所以空间消耗要比非递归代码要大很多。而且,如果递归深度太大,可能导致栈溢出),所以当求的x值比较大时也不易使用递归的思想。
改进版:
其实改进的方法并不难,递归的代码之所以比较慢是因为计算的重复相同的数值,只要想办法解决掉重复计算就ok了。当我们计算某个值时,我们可以从下到上的就算,根据f(0)和f(1)计算出f(2),在根据f(1)和f(2)计算出f(3)...以此类推。这种代码的复杂度为O(n)。
typedef long long ty;ty fib(unsigned x){int arr[2] = { 0,1 };if (x < 2){return arr[x];}ty first = 0;ty second = 1;ty fibn = 0;for (unsigned i = 2; i < x; ++i){fibn = first + second;first = second;second = fibn;}return fibn;}
0 0
- 斐波那契数列实用解法
- 斐波那契数列的实用解法
- 斐波那契数列的解法?
- 斐波那契数列的解法
- 斐波那契数列解法
- 高效斐波那契数列解法
- 斐波那契数列解法
- 斐波那契数列的几种计算机解法
- 关于斐波那契数列的几种解法
- 斐波那契数列的几种不同解法
- 斐波那契数列的低效与高效解法
- 斐波那契数列的几种计算机解法
- 斐波那契数列的矩阵解法(java实现)
- 斐波那契数列的几种计算机解法
- 斐波那契数列的快速解法
- 斐波那契数列的几种解法
- 斐波那契数列递归解法与循环解法
- 斐波那契数列解法,矩阵解法,学习
- 开山斧 V0.3 WIN 版本
- 关系代数中的除法运算
- 文章标题
- HDU 5690 All X的多种算法(2016"百度之星" - 初赛(Astar Round2A)1001)
- java获取到的时间和本地时间差8小时,教你如何加8小时
- 斐波那契数列的实用解法
- 图像放缩中最近邻插值和双线性插值的基本原理
- iOS学习之—— UIViewAutoresizing(自动布局)
- Android中View的绘制过程
- 网易视频云技术分享:HBase高可用原理与实践
- unity 3种message消息管理使用
- note:setStartBefore SetStartAfter SetEndBefore SetEndAfter
- Drupal 8 安装模块时报错
- Maven安装与环境配置(Windows)