面试题10:斐波那契数列
2018-06-19 本文已影响0人
小歪与大白兔
题目描述:
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。
解题思路:
- 斐波那契数列定义如下:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)
1.根据定义,最先想到的是递归的解法,但是当n较大时,递归的效率会很低;是随着n呈指数增长的。 - 可以将已得到的中间项保留,所以最直观的方法就是从下往上计算。时间复杂度O(n)。b表示后面的一个数字,a表示前面的数字即可。每次进行的变换是:temp = a,a=b,b=temp + b
# -*- coding:utf-8 -*-
class Solution:
def Fibonacci(self, n):
# write code here
# 斐波那契数列定义F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)
if n<=0:
return 0
else:
a = 1
b = 1
while n > 2:
temp = a
a = b
b = temp + b
n = n - 1
return b