相关疑难解决方法(0)

如何记忆递归函数?

考虑一个递归函数,比如由以下定义的Euclid算法:

let rec gcd a b =
  let (q, r) = (a / b, a mod b) in
  if r = 0 then b else gcd b r
Run Code Online (Sandbox Code Playgroud)

(这是一个简化,非常脆弱的定义.)如何记忆这样的功能?定义向函数memoize : ('a -> 'b) -> ('a -> 'b) 添加memoization 的高阶函数的经典方法在这里是无用的,因为它只会节省第一次调用的时间.

我已经找到了有关如何在Lisp或Haskell中记忆这样的函数的细节:

这些建议依赖于Lisp中的能力来覆盖函数的符号定义或Haskell使用的"按需调用"策略,因此在OCaml中无用.

recursion ocaml memoization

8
推荐指数
1
解决办法
1153
查看次数

标签 统计

memoization ×1

ocaml ×1

recursion ×1