微软,Google面试题 (16) —— O(logn)求Fibonacci数列
2010-08-24 01:27
459 查看
题目:定义Fibonacci数列如下:
/ 0 n=0
f(n)= 1 n=1
/ f(n-1)+f(n-2) n=2
输入n,用最快的方法求该数列的第n项。
解法一:常规解法。用递归做。不采取任何优化。
解法三:从下往上计算,从f(1)和f(0)推算出f(2),以此类推。
/ 0 n=0
f(n)= 1 n=1
/ f(n-1)+f(n-2) n=2
输入n,用最快的方法求该数列的第n项。
解法一:常规解法。用递归做。不采取任何优化。
int Fibonacci(int n) { if (n == 0 || n == 1) { return n; } return Fibonacci(n-1) + Fibonacci(n-2); }解法二:还是递归,采用记忆化搜索优化。空间复杂度为O(n),时间复杂度也为O(n)。
int fi[MAX] = {0}; int Fibonacci(int n) { if (n == 0 || n == 1) { return fi = n; } else if (fi != 0) { return fi ; } return fi = Fibonacci(n-1) + Fibonacci(n-2); }
解法三:从下往上计算,从f(1)和f(0)推算出f(2),以此类推。
int Fibonacci(int n) { int a = 0, b = 1, i, ret; for (i = 2; i <=n; i++) { ret = a + b; a = b; b = ret; } return ret; }
相关文章推荐
- [转] 程序员面试题精选100题(16)-O(logn)求Fibonacci数列
- 程序员面试题精选100题(16)-O(logn)求Fibonacci数列
- 5个海盗分100颗宝石/金币的2个版本-Google, 谷歌,百度,baidu,阿里巴巴,alibaba,微软,华为,huawei面试题
- 为什么镜子里的影像左右颠倒而不是上下颠倒 - Google, 谷歌,百度,baidu,阿里巴巴,alibaba,微软,华为,huawei面试题
- 经典面试题(二)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯
- 16.O(logn)求Fibonacci数列[Fibonacci]
- 微软,Google面试题 (26) —— 和为n连续正数序列
- 程序员面试题精选100题(16)-O(logn)求Fibonacci数列[算法]
- 你在船上,把一只箱子抛起来,水平面会升高还是下降? - Google, 谷歌,百度,baidu,阿里巴巴,alibaba,微软,华为,huawei面试题
- 微软,Google面试题 (14) —— 约瑟夫环
- 微软,Google面试题 (27) —— 二元树的深度
- 经典面试题(三)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯
- 经典面试题(一)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯
- 转:链表相交有环 经典面试题(三)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯
- 全新整理:微软、Google等公司的面试题及解答、第161-170题
- 100题_16 O(logn)求Fibonacci数列
- 微软,Google面试题 (17) —— 字符串转换成整数
- 微软,Google面试题 (21) —— 左旋字符串(循环移位)
- 微软,Google面试题 (28) —— 字符串的排列
- 全新整理:微软、Google等公司的面试题及解答、第61-70题