知识点:递归
一、题目描述:
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。n<=39
二、解题思路:
斐波那契数列:
1, 1, 2, 3, 5, 8, 13, 21, 33, 54...
第1项是1,第2项是1,从第3项开始,每项的值是前两项之和(也可以认为第0项式0,则从第2项开始,每项的值为前两项的和)
C++实现:
class Solution {
public:
int Fibonacci(int n) {//需要注意,在本例中给出了第0项为0,因此从第2项开始的值为前两项的和
if(n<=1){
return n;
}
//处理从第2项开始的值
int pre = 0;
int pre_next = 1;
int res = 0;
for(int i=2; i<=n; i++){
res = pre + pre_next;
pre = pre_next;
pre_next = res;
}
return res;
}
};
递归实现:超出时间限制
class Solution {
public:
int Fibonacci(int n) {
if(n <= 1){
return n;
}
return Fibonacci(n-2) + Fibonacci(n-1);
}
};
python2.7.3实现:
# -*- coding:utf-8 -*-
class Solution:
def Fibonacci(self, n):
# write code here
if n <= 1:
return n
pre,pnext = 0,1
for i in range(2,n+1):
result = pre + pnext
pre = pnext
pnext = result
return result