我试图做一个"展开" - (我认为),从一个初始值开始,重复应用一些函数,然后得到一个序列作为结果.
在这个例子中,我试图从1.0开始,将它乘以.80,并做4次,这样我最终得到一个数组= [| 1.0; 0.80; 0.64; 0.512 |]
VS 2010说我以无效的方式使用"i",并且闭包不能捕获可变值 - 所以这个函数不能编译.任何人都可以建议一个真正有效的干净方法吗?谢谢.
let expSeries seed fade n =
//take see and repeatedly multiply it by the fade factor n times...
let mutable i = 0;
let mutable weight = seed;
[| while(i < n) do
yield weight;
weight <- weight * fade |]
let testWeights = expSeries 1.0 0.80 4
Run Code Online (Sandbox Code Playgroud)
let exp_series seed fade n =
Array.init (n) (fun i -> seed * fade ** (float i))
Run Code Online (Sandbox Code Playgroud)