zoukankan      html  css  js  c++  java
  • 剑指offer-JZ7 斐波那契数列 Fibonacci

    难度:入门

    题目描述:

    大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。

    思路:

    1.最容易想到的是递归,但是分析发现递归的时间复杂度非常高,2^n

    2.找规律,用循环,创建中间变量来保存前一轮的结果,在下一轮之中直接取用

    # -*- coding:utf-8 -*-
    class Solution:
        def Fibonacci(self, n):
            # write code here
            '''if n == 0:
                return 0
            if n == 1:
                return 1
            if n >1:
                num = self.Fibonacci( n-1)+self.Fibonacci( n-2)
                return num
            return None #判断时不是负数,因为体重要求的是整数,没有说一定是整数
              '''  # 如果按照递归来写的话,时间复杂度的增长为(2**n) 因为每个数都会被分为两个,然后不断分解
    
            # 递归  首先  要理解斐波那契数列    
            # 0 1 1 2 3 5 8 13
            # n=0  num =0  
            # n=1 num = 1
            # n=2 num =1
            # ''''''
            # 当n=k(k>1) 的时候,f(k)=f(k-1)+f(k-2) 
            # 当n=1 ,f(1) =1 当n=0,f(0)=0
            
            
            # 保留中途计算过的结果,用于之后的计算
            # 通过循环来做
            if n == 0:
                return 0
            if n == 1:
                return 1
            a = 1
            b = 0
            ret = 0
            for i in range(0,n-1):
                ret = a + b
                b = a
                a = ret 
            return ret
               
                
            
    #         if n > 1:
                #当n=2   h = 0+1  初始化 a=0 b =1
  • 相关阅读:
    JavaScript数组方法--includes、indexOf、lastIndexOf
    JavaScript数组方法--flat、forEach、map
    JavaScript数组方法--filter、find、findIndex
    bootstrap-14
    bootstrap-13
    bootstrap-12
    bootstrap-11
    bootstrap-10
    bootstrap-9
    bootstrap-8
  • 原文地址:https://www.cnblogs.com/LLLLgR/p/15013092.html
Copyright © 2011-2022 走看看