为了账号安全,请及时绑定邮箱和手机立即绑定

正在回答

2 回答

递归的性能是很低,因为会有大量重复计算的过程。但是可以提高性能。你把已经递归的值存放到字典里,需要用时取之。这样你输入1000都不会死机。

from collections import defaultdict
total_dic = defaultdict(int)

def fib(k):
    if k in [1, 2]:
        return 1
    if k in total_dic:
        result = total_dic[k]
    else:
        result = fib(k-1) + fib(k-2)
        total_dic[k] = result
    return result
        
print(fib(1000))


3 回复 有任何疑惑可以回复我~

楼上回答的无非是增加了一个缓存,那为什么不用Python自带的缓存来实现呢,functool.lru_cache,代码不需要任何变动,仅仅加一个装饰器即可

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Python 算法面试难点攻坚课--动态规划
  • 参与学习       3704    人
  • 解答问题       11    个

动态规划和递归作为算法中面试频率很高,是我们这门课程重点攻克对象。

进入课程

k输入30就很慢了,100直接死机

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信