斐波那契序列-记忆搜索-python

使用递归求解斐波那契额序列的话,会出现暴力求解导致的时间过长的问题,因此,为了优化数据查找的时间,使用记忆搜索的方法进行读取的优化。
具体的操作的实现是:把出现过的序列存储到缓存中,下一次的问题求解如果还调用这个子模块,那么直接从缓存中取出来就行,减少搜索查找的时间。
关键点:字典缓存;记忆查找;

#斐波那契-记忆搜索
# 初衷是解决暴力调用递归导致的搜索时间过长的问题
# 
class Solution:
    def fib(self,n):
        if n <= 1:
            return n
        self.cache = {0:0,1:1} #用字典来存储fib序列的初始条件
        return self.memomize(n)
    def memomize(self,n):
        if n in self.cache.keys(): # keys后面是需要加括号的,不加入括号的话,会出现什么影响呢?
            return self.cache[n]   # 字典型的存储的数据在索引的时候也是使用方括号的,自己在做的时候用成了圆括号,所以出现了问题
        # 
        self.cache[n] = self.memomize(n-1) + self.memomize(n-2)
        return self.memomize(n)

测试案例:

case= Solution()
print(case.fib(6))

8

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值