0

这是我的原始代码。

let rec reverse l =
   match l with 
   | [] -> []
   | (h::t) -> (reverse t) :: h
4

1 回答 1

3

cons::运算符将元素作为左侧参数,将列表作为右侧参数。在这里,你做相反的事情,这是行不通的。

在列表末尾的元素处添加元素的正确方法是使用列表连接:

let rec reverse l =
  match l with
  | [] -> []
  | h :: t -> (reverse t) @ [h]

该代码虽然不是最优的,但您可能希望使其成为tail recursive

于 2015-02-17T01:48:44.747 回答