概述:
    LRU全称 least recently used,是一种内存管理算法,假设长期不被使用的数据,在数据占用达到内存的阙值时,最近最少使用的数据将被移除。

    实例-1:

    1. def test(n):
    2. print(f'计算{n}的阶乘')
    3. if n <= 1:
    4. return 1
    5. else:
    6. return n * test(n -1)
    7. test(5)
    8. print('-----------------')
    9. test(3)
    10. """
    11. 计算5的阶乘
    12. 计算4的阶乘
    13. 计算3的阶乘
    14. 计算2的阶乘
    15. 计算1的阶乘
    16. -----------------
    17. 计算3的阶乘
    18. 计算2的阶乘
    19. 计算1的阶乘
    20. """
    21. # 以上不使用LRU算法时,test(3)在计算test(5)的时候已经被计算了,test(3)的时候又计算了一边
    22. @functools.lru_cache()
    23. def test(n):
    24. print(f'计算{n}的阶乘')
    25. if n <= 1:
    26. return 1
    27. else:
    28. return n * test(n -1)
    29. test(5)
    30. print('-----------------')
    31. test(3)
    32. """
    33. 计算5的阶乘
    34. 计算4的阶乘
    35. 计算3的阶乘
    36. 计算2的阶乘
    37. 计算1的阶乘
    38. -----------------
    39. """
    40. # 以上test(3)在计算test(5)的时候已经被计算了,所以直接拿了缓存的值,没有再次打印

    leetcode算法题:爬楼梯

    1. class Solution:
    2. @functools.lru_cache() # 缓存装饰器
    3. def climbStairs(self, n: int) -> int:
    4. if n == 1: return 1
    5. if n == 2: return 2
    6. return self.climbStairs(n-1) + self.climbStairs(n-2)
    7. # 时间复杂度是O(n),空间复杂度是O(n)