LeetCode刷题——泰波那契数列

泰波那契数列:n=0,T(0)=0  n=1,T(1)=1  n=2,T(2)=1 

                        n>=3时,T(n) =T(n-1)+T(n-2)+T(n-3)

解题思路

n>2时,设了a0,a1,a2=0,1,1

假设n=3,则t_3 = a0+a1+a2 其实也就是前三项和

如何再将a1赋值给a0,a2赋值给a1,前三项和赋值给a2(ao=a1,a1=a2,a2=t_3)

循环次数就是

假设

        n=3 n-2=1

        n=4 n-2=2

        n=5 n-2=3


 


class Solution:
    def tribonacci(self, n):
        if n == 0:
            return 0
        if n <= 2:
            return 1
        
        a0, a1, a2 = 0, 1, 1
        for i in range(n -2):
            num = a0 + a1 + a2
            a0 = a1
            a1 = a2
            a2 = num
        return num

n>=3时,本来想用递归解决的,但是超过了python的最大递归深度

递归代码如下

import sys
sys.setrecursionlimit(1000)


class Solution:
    def tribo_nacci(self, n):
        if n == 0:
            return 0
        elif n <= 2:
            return 1
        else:
            return self.tribo_nacci(n - 1) + self.tribo_nacci(n - 2) + self.tribo_nacci(n - 3)


s = Solution()

但是非常不建议用递归来写,因为他真的非常消耗cpu资源

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值