我编写了代码(天真地)来执行自动回忆录。我试图用函数式编程方式编写它,因此没有使用任何全局变量。
def naive_memoise(caches):
def memoise(f):
nonlocal caches
def mem_f(n):
nonlocal caches, f
if f not in caches:
caches[f] = {}
if n not in caches[f]:
caches[f][n] = f(n)
return caches[f][n]
return mem_f
return memoisedef fib(n):
if n in [0, 1]:
return n
return fib(n - 2) + fib(n - 1)
mem = naive_memoise({})
fib = mem(fib)发布于 2019-03-02 23:27:50
这在我看来很好,我没有什么重要的补充。
nonlocal@decorator语法。https://codereview.stackexchange.com/questions/214618
复制相似问题