F#数组的累积产品

Gil*_*ton 4 f#

使用F#,我想计算没有任何循环的数组的累积产品.第一个想法是使用Array.fold和Array.map,但我不知道如何使用它们.你有什么建议?或peharps使用递归函数?非常感谢您的帮助.

Mau*_*Mau 6

如果您需要所有元素的产品,您可以使用折叠:

> let a = [|1;2;3;4;5|];
> a |> Array.fold (*) 1;;

val it : int = 120
Run Code Online (Sandbox Code Playgroud)

如果您需要中间(累积)结果,则可以使用scan.扫描获取数组中的每个元素,并将一个函数(在这种情况下为产品)应用于元素和先前的累积结果.从累加器的值1开始,我们得到:

> a |> Array.scan (*) 1;;

val it : int [] = [|1; 1; 2; 6; 24; 120|]
Run Code Online (Sandbox Code Playgroud)

  • 我完全忘了扫描.非常感谢你 (2认同)