面试算法(八)斐波那契数列
2014-07-11 11:47
225 查看
1、写一个函数,输入n,求斐波那契数列的第n项。
解法:用递归的方法求解会导致严重的效率问题。
2、可以用树形结构来表示数列间的依赖关系,我们会发现树中的很多结点是重复的,而且重复的结点数会随着n的增大而急剧增加。事实上,用递归方法计算的时间复杂度是以n的指数的方式递增的。
我们可以把已经得到的数列中间项保存起来,如果下次需要计算的时候先查找一下,如果前面已经计算过就不再重复计算了。
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
解法:斐波那契数列的变相考查,总数f(n)=f(n-1)+f(n-2)。
解法:用递归的方法求解会导致严重的效率问题。
long long Fib(unsigned int n) { if(n<=0) return 0; if(n==1) return 1; return Fib(n-1) + Fib(n-2); }
2、可以用树形结构来表示数列间的依赖关系,我们会发现树中的很多结点是重复的,而且重复的结点数会随着n的增大而急剧增加。事实上,用递归方法计算的时间复杂度是以n的指数的方式递增的。
我们可以把已经得到的数列中间项保存起来,如果下次需要计算的时候先查找一下,如果前面已经计算过就不再重复计算了。
long long Fib(unsigned n) { int result[2] = {0,1}; if(n<2) return result ; long long fibNMinusOne = 1; long long fibNMinusTwo = 0; long long fibN = 0; for(unsigned int i=2; i<=n; ++i) { fibN = finNMinusOne + fibNminusTwo; finNMinusTwo = finNMinusOne; finNMinusOne = fibN; } return fibN; }3、相关题目:
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
解法:斐波那契数列的变相考查,总数f(n)=f(n-1)+f(n-2)。
相关文章推荐
- 算法数据结构面试分享(九)从斐波那契数列初识递归
- 青蛙跳台阶问题,常见面试算法题,斐波那契数列(Fibonacci Sequence)
- 从零开始学swift(三)-算法之斐波那契数列
- 微软面试简单算法题目
- 代码面试最常用的10大算法
- 水池问题的lua语言算法(面试题分析:我的Twitter技术面试失败了)
- twitterm面试算法题
- 面试算法题:求a+aa+aaa+aaaa+aa...a的值
- 面试算法题:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
- 程序员如何快速准备面试中的算法
- 经典算法面试题目-置矩阵行列元素为0(1.7)
- [面试算法题]有序列表删除节点-leetcode学习之旅(4)
- 笔试面试算法经典--二叉树的镜像-递归与非递归实现(Java)
- 《慕课网玩转算法面试》笔记及习题解答1
- 斐波那契数列算法分析
- 【LeetCode-面试算法经典-Java实现】【066-Plus One(加一)】
- 《慕课网玩转算法面试》笔记及习题解答3.1 ~3.4
- 笔试面试算法经典--连续子数组的最大乘积及连续子数组的最大和(Java)
- 直通BAT面试算法精讲课
- 面试时算法题的解答思路