裴波那契数列(循环实现递归)
来源:互联网 发布:疯狂软件教育中心 编辑:程序博客网 时间:2024/06/01 11:14
裴波那契(Fibonacci)数列
f(n)=
求裴波那契数列的第n项。(题目来自剑指offer)
1.递归解法,效率很低的解法,不用
一看到这个题,我们就很容易窃喜的想到这种解法
很多f(i)进行了重复计算,随着n的增大,计算量急剧增加,时间复杂度以n的指数方式递增,存在很严重的效率问题。
int Fibonacci(int n) { if(n<=0) return 0; if(n==1) return 1; return Fibonacci(n-1)+Fibonacci(n-2); }
2.用循环实现递归,面试官期待的解法(O(n))
方法1中的递归代码之所以慢是因为重复计算的太多,我们只要想办法避免重复就行了。可以把已经得到的数列中间项保存起来,如果下次需要的时候先查找一下,如果前面已经计算过了就不用再重复计算了。
int Fibonacci(int n) { if(n<=0) return 0; if(n==1) return 1; int a=1; int b=0; int fib=0; for(int i=2;i<=n;i++) { fib=a+b; b=a; a=fib; } return fib; }
3.将求裴波那契数列转换成矩阵的乘方
有创意,但代码复杂,不实用
0 0
- 裴波那契数列(循环实现递归)
- fibonacii数列(斐波那契数列)的递归实现及循环实现
- 递归和循环方式实现斐波那契数列
- 递归和循环实现斐波那契数列
- 斐波那契数列Fibonacci实现(递归、尾递归、循环)
- 斐波那契数列 (递归 循环)
- Fibonacci (斐波那契数列)-循环,递归实现方式
- python使用递归、尾递归、循环三种方式实现斐波那契数列
- 斐波那契数列-递归实现
- 斐波那契数列(递归实现)
- 斐波那契数列-递归实现
- 斐波那契数列循环实现
- 斐波那契数列递归实现(Java)
- 斐波那契数列实现(递归)
- 斐波那契数列的递归,迭代(循环),通项公式三种实现
- 斐波那契数列的递归,迭代(循环),通项公式三种实现
- 斐波那契数列的递归,迭代(循环),通项公式三种实现
- 斐波那契数列的递归、迭代(循环)、通项公式三种实现
- 垃圾回收的依据,如何判断一个对象已经毫无用处
- 成员变量的初始化顺序
- 星际穿越----网易2017内推笔试编程题合集(一)
- Day7
- Java空串和null串
- 裴波那契数列(循环实现递归)
- JAVASE总结--String
- 集合和泛型
- U盘安装ubntu系统
- 欢迎使用CSDN-markdown编辑器
- Zen Coding
- Windows 7 下SVN图标无法显示解决办法
- Sum Root to Leaf Numbers
- 129.leetcode Sum Root to Leaf Numbers(medium)[深度遍历DFS]