我正在尝试编写一个函数来统一memoize Ruby中的任何函数(如本文第6页所述,它在Python中做同样的事情:http://courses.csail.mit.edu/6.01/spring07/lectures/讲座.pdf),但我卡住了.这是我的代码,它不起作用(函数被正确评估,但没有被记忆).谁能告诉我哪里出错了?
def fib(n)
return n if n<2
fib(n-1) + fib(n-2)
end
def memoize(&f)
memo = {}
doit = ->(arg) do
return memo[arg] if memo[arg]
memo[arg] = f.call(arg)
memo[arg]
end
doit
end
fib = memoize{|x| fib(x)}
puts fib.call(50)
Run Code Online (Sandbox Code Playgroud)