Leetcode-斐波那契数列

在这里插入图片描述

方法一:使用递归

(但是在leetcode里不能执行成功,因为我不会在类中调用自身递归,所以我是在jupyter notebook中操作的)

def fib( n):
    if(n == 0):
        return 0
    elif(n == 1):
        return 1
    else:
        return fib(n-1)+fib(n-2)

调用

fib(30)

运行结果
在这里插入图片描述

方法二:(不使用递归)

在这里插入图片描述
把a、b、c分别看做三个指针依次往后挪,例如a,当a在最前面时,a = b +c,此时b在最前面,b = a+c,以此类推:

class Solution:
    def fib(self, n: int) -> int:
        if(n == 0):
            return 0
        elif(n == 1 or n == 2):
            return 1
        a = 0
        b = 1
        c = 1
        for i in range(2,n):
            if(c>a and c>=b):     ## 判断当前哪个数在最前面(最前面的最小)
                a = b+c
            elif(a>c and a>b):
                b = a+c
            elif(b>a and b>c):
                c = a+b
        if(a>b and a>c):
            return a
        elif(b>a and b>c):
            return b
        else:
            return c

提交通过:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值