1

我正在尝试将整数列表转换为递归函数中的列表元组。

假设我有一个整数列表,[1;2;3;4;5;6;7;8]我想把它变成([1;3;5;7],[2;4;6;8])不同边的奇数和偶数

我面临着很多问题,例如预期的结果,'a list * 'a list而且我有一个'b * 'c偶数'b & 'c是整数列表。

4

1 回答 1

6

由于您专门要求递归函数..:

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)
于 2012-10-04T20:49:32.570 回答