题目描述:
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。
Python
方法一:递归法,但超时
# -*- coding:utf-8 -*-
class Solution:
def Fibonacci(self, n):
if n==0:
return 0
elif n=1:
return 1
elif n>=2:
return self.Fibonacci(n-1)+ self.Fibonacci(n-2)
方法二:
class Solution:
def Fibonacci(self, n):
if n == 0:
return 0
if n == 1:
return 1
if n > 1:
a1,a2 = 0,1
a = 0
for i in range(1,n):
a = a1 + a2
a1,a2 = a2,a
return a
方法三
# -*- coding:utf-8 -*-
class Solution:
def Fibonacci(self, n):
# write code here
res=[0,1,1,2]
while len(res)<=n:
res.append(res[-1]+res[-2])
return res[n]
方法三
# -*- coding:utf-8 -*-
class Solution:
def Fibonacci(self, n):
# write code here
if n == 0:
return 0
if n == 1:
return 1
if n == 2:
return 1
if n >= 3:
s = []*n
s.append(1)
s.append(1)
for i in xrange(2,n):
s.append(s[i-1]+s[i-2])
return s[n-1]
C++
动态规划
class Solution {
public:
int Fibonacci(int n) {
int f = 0, g = 1;
while(n--) {
g += f;
f = g - f;
}
return f;
}
};