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


    原题描述:

    查找斐波纳契数列中第 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 1
            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 == 0:
                return 0
            elif n == 1:
                return 1
            for i in range(0,n-2):
                num.append(num[-1] + num[-2])
            return num[-1]
    

      

      

  • 相关阅读:
    libjpeg的问题
    CURLcode的定义
    libcurl断点下载遇到的问题
    itunes connect
    node.js模块的坑
    itunes connect 改版后无法访问的处理办法
    cocos2d-x 在输入文字时点击语音crash
    Windows下LuaJIT的编译和使用
    多个so中模板单例的多次实例化
    多线程中避免使用信号量
  • 原文地址:https://www.cnblogs.com/bozhou/p/6928562.html
Copyright © 2020-2023  润新知