非递归的斐波那契数列(Python)

题目描述

大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。

n<=39


思路:

斐波那契数列最典型最简单的方法当然是递归了,但是如果面试碰到这道题用递归做,offer是拿不到的。我们知道斐波那契数列永远只跟上两个数有关,那么很自然的想到,我就保留上两个的数值就好。


代码:

class Solution:
    def Fibonacci(self, n):
        if n == 0:
            return 0
        elif n == 1:
            return 1
        else:
            last,last_last = 1,0
            for i in range(n//2):
                last_last = last+last_last
                last = last+last_last
            return last if n%2 == 1 else last_last
            #单数返回last,双数返回last_last

你可能感兴趣的:(剑指offer限时促销)