Fibonacci数列的递归与非递归实现算法详解
来源:互联网 发布:能看回看的直播软件 编辑:程序博客网 时间:2024/05/04 03:25
递归算法
因为递归需要不断的调用自身,当n过大的时候,程序将会很慢效率不高,不推荐使用,关于递归实现算法,也很简单,很多教科书上都是这种解法。
//递归算法long long Fibonacci(unsigned int n){if (n == 0)return 0;if (n == 1)return 1;return Fibonacci(n - 1) + Fibonacci(n - 2);}非递归算法
我主要讲述一下非递归算法的实现,非递归算法是比较实用的,也是面试官比较喜欢的一种方法
递归的代码之所以慢是因为重复的计算太多,我们只需要想办法避免重复计算就好了。比如我们将已经得到的数列中间项保存起来,如果下次需要计算的时候我们先查一下,如果前面已经计算过了句不用重复计算了,更简单的办法就是从下往上计算,首先呢根据f(0)和f(1)算出f(2),再根据f(1)和f(2)算出f(3)以此类推就可以算出n项了,很容易理解,复杂度为O(N):
//非递归算法long long Fibonacci(unsigned int n){int result[2] = { 0,1 };if (n < 2)return result[n];long long fibone = 0;long long fibtwo = 1;long long fibn = 0;for (unsigned int i = 2; i <= n; i++){fibn = fibone + fibtwo;fibtwo = fibn;fibone = fibone;}return fibn;}
0 0
- Fibonacci数列的递归与非递归实现算法详解
- Fibonacci数列的递归与非递归实现
- fibonacci数列的递归与非递归实现
- Fibonacci数列的递归与非递归实现
- fibonacci 数列的非递归算法
- Fibonacci数列的非递归实现
- fibonacci数列 (递归与非递归)
- Fibonacci数列的递归和非递归
- Fibonacci(斐波那契)数列的递归与非递归实现 python
- Fibonacci数列非递归解法 C++实现
- Fibonacci数列的非递归实现(Java版)
- Fibonacci数列-递归算法
- 算法分析与设计-01-Fibonacci数列的递归算法
- Fibonacci数列 递归实现
- 菲波拉契数列的递归与非递归算法
- 菲波拉契数列的递归与非递归算法
- java代码--Fibonacci数列(递归与非递归效率)
- Fibonacci的递归及非递归实现
- Android多语言切换
- Java Modifier类 判断修饰符
- 类模板
- 魅蓝3s调试React Native, 开启开发者菜单
- SAP CRM 通过调试观察CL
- Fibonacci数列的递归与非递归实现算法详解
- 踩坑实录 Android Studio真机测试时 Error while Installing APK
- SAP CRM 使用Javascript触发SAP Server Event
- mini2440通过nfs挂载linux文件夹
- Android Context 上下文 你必须知道的一切
- STL简介
- SAP中的ALE, IDOC
- 安装Ubuntu16.04小结
- python的smtp邮件发送