Python实现斐波那契数列

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

n<=39

        见到题目很自然联想到用递归或是用数组将前面的结果全部存储起来(这个想法其实和递归没区别),写起来最简单。但实际写出来发现不现实,运行效率太低,提交答案的时候果然提示超出要求时间,程序太过复杂。查阅答案的时候才发现一个很巧妙的方法(主要还是自己太笨了脑筋不会拐弯=.=||),其实F(n)=F(n-1)+F(n-2),也就是说整个运算过程其实只用保存两个数值即可计算出所需结果,并不需要保存前面的全部结果。2个数值,就应该联想到通过模2来存取数值(写到这里愈发觉得自己是个猪头),这样大大提高了效率,降低了存储空间。

        其次是在实现过程中要注意一个小问题,最开始本猪写的是for i in range(2,n),后来发现答案全错了,原来是因为n=2时,range(2,2)为0,并不会运算下面的值,所以需要多算一位。

# -*- coding:utf-8 -*-

class Solution:

    def __init__(self):

        self.temp_Array = [0,1]

    def Fibonacci(self, n):

        if type(n) != int or n <= 0:

            return False

        elif n == 1:

            return 1

        else:

            for i in range(2,n+1):

                self.temp_Array[i%2] = self.temp_Array[0]+self.temp_Array[1]

            return self.temp_Array[n%2]

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 什么是斐波那契数 斐波那契数,亦称之为斐波那契数列(意大利语: Successione di Fibonacci)...
    伊森H阅读 859评论 0 2
  • 斐波那契数列的相关题目是面试常见的,所以我看了些资料总结记录一下这些小的知识点。 1. 元组实现 代码: 输出: ...
    梅花鹿数据阅读 4,346评论 2 1
  • 一、递归形式 二、非递归形式 两种实现方法运行结果一致,但是递归形式耗时较长,实际工作中应避免使用递归
    fishandcat阅读 527评论 0 1
  • 1.电源需求分析 主控板 (6) 核心板电压 5V(lm2576-5),3.3V(lm2576-3.3)串口独立电...
    nino天阅读 763评论 1 5
  • 青青翠竹半黄花 一石惊起栖群鸭 人间何处清净地 心气平时到处家 点击如下链接可以阅读我的推鉴作品: 无非般若
    大师只说真话阅读 237评论 13 7