有可能以某种方式结合memoization和tail-recursion吗?我现在正在学习F#并理解这两个概念,但似乎无法将它们结合起来.
假设我有以下memoize功能(来自Real-World Functional Programming):
let memoize f = let cache = new Dictionary<_, _>()
(fun x -> match cache.TryGetValue(x) with
| true, y -> y
| _ -> let v = f(x)
cache.Add(x, v)
v)
Run Code Online (Sandbox Code Playgroud)
以及以下factorial功能:
let rec factorial(x) = if (x = 0) then 1 else x * factorial(x - 1)
Run Code Online (Sandbox Code Playgroud)
记忆factorial并不太难,并且使尾递归也不是:
let rec memoizedFactorial =
memoize (fun x -> if (x = 0) then 1 else x * memoizedFactorial(x - …Run Code Online (Sandbox Code Playgroud) 我需要计算一堆数值数据的平均值,标准差,中位数等.我可以使用一个很好的开源.NET库吗?我找到了NMath,但它不是免费的,可能对我的需求有点过分.