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

剑指offer-斐波那契数列-递归和循环-python

时间:2019-12-14 17:14:54      阅读:88      评论:0      收藏:0      [点我收藏+]

标签:返回   offer   数据   write   return   奇数   off   现在   code   

大家都知道斐波那契数列(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

剑指offer-斐波那契数列-递归和循环-python

标签:返回   offer   数据   write   return   奇数   off   现在   code   

原文地址:https://www.cnblogs.com/ansang/p/12040229.html

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