题目:
查找斐波纳契数列中第 N 个数。
所谓的斐波纳契数列是指:
前2个数是 0 和 1 。第 i 个数是第 i-1 个数和第i-2 个数的和。
斐波纳契数列的前10个数字是:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34 ...
链接:http://www.lintcode.com/zh-cn/problem/fibonacci/
思路:这道题很基础,但是重点是时间复杂度要更可能低,否则会超时。不能用递归,要改成迭代
代码:
python:
class Solution:
"""
@param n: an integer
@return: an ineger f(n)
"""
def fibonacci(self, n):
# write your code here
if n==1:#特例
return 0
if n==2:
return 1
a,b,c=0,1,0
num=3
while(num<=n):#用迭代的思路
c=a+b
a=b
b=c
num+=1
return c
c++:
class Solution {
public:
/*
* @param n: an integer
* @return: an ineger f(n)
*/
int fibonacci(int n) {
// write your code here
if(n==1)return 0;
if(n==2)return 1;
int a=0,b=1,c=0;
for(int i=3;i<=n;i++)
{
c=a+b;
a=b;
b=c;
}
return c;
}
};