NOWCODER 剑指offer 斐波那契数列

本文探讨了斐波那契数列的两种不同实现方法:一种是通过维护一个列表来记录中间结果;另一种则是使用两个变量进行迭代计算。后者在时间和空间复杂度上表现更优。
25 ms5724K

居然不能用函数自己递归

关于边界之类的问题还是要考虑细致

# -*- coding:utf-8 -*-
class Solution:
    def Fibonacci(self, n):
        # write code here
        fibo = [0,1]
        if n<2:
            return fibo[n]
        for i in range(2,n+1):
            fibo.append(fibo[i-1]+fibo[i-2])
        #return self.Fibonacci(n-1)+self.Fibonacci(n-2)
        return fibo[-1]
        

————————————————————————————————————————————

一个更规范的动态规划算法

n--是后减,即先用n的值当做是n--的值,再把n的值减一

--n是先减,即先把n的值减一当做是--n的值

以及Python没有++ 和--这种表达方式

运行时间:42ms

占用内存:5740k

反而两个消耗都增加了

# -*- coding:utf-8 -*-
class Solution:
    def Fibonacci(self, n):
        # write code here
        #0,1,1,2,3,5
        a = 0
        b = 1
        while(n):
            b = a + b
            a = b - a
            n -= 1
        return a

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值