我试图将一个整数列表转换为递归函数中的列表元组.
假设我有一个整数列表,[1;2;3;4;5;6;7;8]
我想把它转化为([1;3;5;7],[2;4;6;8])
不同方面的分数和均衡
我面临很多问题,例如期望的结果'a list * 'a list
,我'b * 'c
甚至'b & 'c
是整数列表.
既然你专门询问了一个递归函数..:
let partitionNumbers nums =
let rec impl odds evens = function
| [] -> odds, evens
| n::ns when n % 2 = 1 -> impl (n::odds) evens ns
| n::ns -> impl odds (n::evens) ns
List.rev nums |> impl [] []
Run Code Online (Sandbox Code Playgroud)
然而,更惯用的方法是(几乎总是)使用高阶函数:
let partitionNumbers = List.partition (fun n -> n % 2 = 1)
Run Code Online (Sandbox Code Playgroud)