我正在尝试将整数列表转换为递归函数中的列表元组。
假设我有一个整数列表,[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 [] []
然而,更惯用的方法是(几乎总是)使用高阶函数:
let partitionNumbers = List.partition (fun n -> n % 2 = 1)