面试题9:斐波那契数列
2015-07-01 09:47
369 查看
题目:写一个函数,输入n,求斐波那契数列的第n项。斐波那契数列的定义如下:
解法一:动态规划
解法二:时间复杂度O(logn)但不够实用的解法
利用如下所示公式可得O(logn)算法:
因此,我们只需要求得右边矩阵的n-1次方即可求得f(n)的值。如果从0开始循环,n次方需要n次运算,时间复杂度仍为O(N),不比前面的方法快。
可以考虑乘方的如下性质:
可用递归的思路实现。
解法一:动态规划
int fibonacci (int n) { if (n<=1) return n; int p = 0, q = 1, result = 0; for (int i = 2; i <= n; ++i) { result = p+q; p = q; p = result; } return result; }
解法二:时间复杂度O(logn)但不够实用的解法
利用如下所示公式可得O(logn)算法:
因此,我们只需要求得右边矩阵的n-1次方即可求得f(n)的值。如果从0开始循环,n次方需要n次运算,时间复杂度仍为O(N),不比前面的方法快。
可以考虑乘方的如下性质:
可用递归的思路实现。
相关文章推荐
- 黑马程序员---反射总结笔记(2015.7.1)
- 黑马程序员——JAVA常见错误整理
- 为什么我不想成为Web前端程序员
- 【剑指Offer学习】【面试题25:二叉树中和为某一值的路径】
- 人生第一次面试之旅
- 【剑指Offer学习】【面试题24:二叉搜索树的后序遍历序列】
- 【剑指Offer学习】【面试题23:从上往下打印二叉树】
- 黑马程序员——Java基础---集合(一)
- 黑马程序员——OC基础学习(四)---封装,继承和多态的学习知识总结
- 为什么我不想成为Web前端程序员
- 什么样的任务程序员会认为没有价值
- 强烈推荐 | 百度、阿里、腾讯 40 道面试题超全面总结
- 《程序员的自我修养》读书笔记4
- 【面试总结】--记录一次面试经历
- 黑马程序员-java基础-IO流中的字节流和字符流
- 黑马程序员——Java基础--冒泡、选择、二分查找
- 菜鸟好文推荐(九)——程序员”青春饭”问题之我见
- C中一道关于内存的思考题
- 黑马程序员——Java基础--常见对象总结(三)
- 程序员杂谈