斐波那契数列
时间限制:1秒 空间限制:32768K 热度指数:489974
算法知识视频讲解
题目描述
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。
n<=39
解析
斐波那契数列:0 、1、1、2、3、5、8、13、21、34
| 0 ,(n=0 )
f(n) = | 1 ,(n=1 )
| 1 ,(n=2)
| f(n-2)+f(n-1) ,(n>=3)
代码
# -*- coding:utf-8 -*-
class Solution:
# 注意:这里不能用递归,会栈溢出
# 这里只能用动态规划
def Fibonacci(self, n):
# write code here 0 1、1、2、3、5、8、13、21、34
#if n == 0:
# return 0
#if n == 1:
# return 1
#if n == 2:
# return 1
#if n >= 3:
# s = []
# s.append(1)
# s.append(1)
# for i in xrange(2,n):
# s.append(s[i-1]+s[i-2])
# return s[n-1]
# 法2.有技巧的动态规划
#f = 0
#g = 1
#while n:
# n -= 1
# g += f
# f = g - f
#return f
# 法3.动态规划
a, b = 0, 1
for i in range(n):
a, b = b, a + b
return a