Vip*_*pul 1 python recursion memoization
什么是memoization,它是如何在python中使用的?以及它与递归的不同之处.在某个地方,我遇到了一个声明,为了减少递归程序或函数的执行时间,我们应该使用memoization而不是递归.例如:
def factorial( n ):
if n <1: # base case
return 1
else:
return n * factorial( n - 1 ) # recursive call
Run Code Online (Sandbox Code Playgroud)
如果这是计算阶乘的递归函数,那么在使用memoization时会有什么变化?
小智 9
记忆是存储结果以供将来使用.Python的functools模块包含一个简单的装饰器lru_cache,可以为您处理.所以对于你的例子:
@lru_cache(maxsize=None)
def factorial( n ):
...
Run Code Online (Sandbox Code Playgroud)
将存储阶乘的每个结果,包括其递归调用.这意味着下次调用阶乘时,您将无法执行完整计算,而是在您到达之前调用过的呼叫时立即停止.此时,结果将从先前存储的结果中提取.
这些答案也可能对您有用: 什么是memoization以及如何在Python中使用它?
| 归档时间: |
|
| 查看次数: |
247 次 |
| 最近记录: |