码迷,mamicode.com
首页 > 编程语言 > 详细

LintCode Python 入门级题目 斐波纳契数列

时间:2017-06-01 14:37:47      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:列表   python   运行   时间   integer   img   ...   else   cci   

原题描述:

查找斐波纳契数列中第 N 个数。

所谓的斐波纳契数列是指:

  • 前2个数是 0 和 1 。
  • 第 i 个数是第 i-1 个数和第i-2 个数的和。

斐波纳契数列的前10个数字是:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34 ...

题目分析:

开始的想法,通过递归实现输出fib(n-1)+fib(n-2)的值计算,原理正确,算法复杂度高,导致运行时间超过lintcode限制:

class Solution:
    # @param n: an integer
    # @return an integer f(n)
    # 递归实现
    def fibonacci(self, n):
        if n == 1:
            return 0
        elif n == 2:
            return 1
        else:
            return self.fibonacci(n-1) + self.fibonacci(n-2)
技术分享

修改为迭代实现,将斐波纳契数保存到列表中,循环n-2次,每次将数列最后一个元素[-1]和倒数第二个元素[-2]相加并追加到列表中,最终返回列表最后一个元素~

class Solution:
    # @param n: an integer
    # @return an integer f(n)
   # 通过for循环迭代实现
    def fibonacci(self, n):
        num = [0,1]
        if n == 1:
            return 0
        elif n ==1:
            return 1
        for i in range(0,n-2):
            num.append(num[-1] + num[-2])
        return num[-1]

  

  

LintCode Python 入门级题目 斐波纳契数列

标签:列表   python   运行   时间   integer   img   ...   else   cci   

原文地址:http://www.cnblogs.com/bozhou/p/6928562.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!