剑指offer-斐波那契数列-递归和循环-python
大家都知道斐波那契数列(1、1、2、3、5、8、13、21、34、……),现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。
n<=39
斐波那契数列满足递归的条件:既F(n) = F(n-1)+F(n-2)
# -*- coding:utf-8 -*-
class Solution:
    def Fibonacci(self, n):
        # write code here
        #递归法
        if n ==0:
            return 1
        elif n ==1:
            return 1
        else:
            return self.Fibonacci(n-1) +self.Fibonacci(n-2)这种方式简单粗暴,但是允许时间太长了。
方法2
循环叠加两个数
# -*- coding:utf-8 -*-
class Solution:
    def Fibonacci(self, n):
        # write code here
        #递归法
        a = 0
        b = 1
        # 循环叠加,因为每次叠加两个,所以,只需要循环到n的一半就行,但是数据是从0开始,所以需要到n // 2 + 1
        for i in range(1, n // 2 + 1):
            a = a + b
            b = a + b
        # 叠加之后,如果n为奇数,那么返回b,如果n为偶数,那么返回a
        if n % 2 == 1:
            return b
        else:
            return a
        pass方式3,类似2
class Solution:
    def Fibonacci(self, n):
        # write code here
        a = 0
        b = 1
        if n <= 1:
            return n
        for i in range(n):
            a ,b = b,b+a            
        return a 相关推荐
  bizercsdn    2020-03-27  
   JakobHu    2020-01-03  
   llwang0    2019-12-28  
   qitong    2019-11-04  
   风吹夏天    2019-11-03  
   seekerhit    2019-10-20  
   Broadview    2019-06-27  
   风和日丽    2019-06-27  
   taiyangshenniao    2019-06-27  
 动态规划有时被称为递归的相反的技术。动态规划方案通常使用一个数组来建立一张表,用于存放被分解成众多子问题的解。当算法执行完毕,最终的解法将会在这个表中找到。今天我们先从我们最熟的斐波那契数列数列开始。
  WindChaser    2019-06-21  
   hujun0    2013-03-19  
   HappyRocking    2019-05-16  
   HMHYY    2019-03-19  
   HeyShHeyou    2018-01-16  
   tingke    2015-08-09  
   天恒永恒    2017-01-12  
   iamlazyphper    2017-12-11