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]

ただし、そのコードは最適ではなく、末尾再帰にしたい場合があります。

于 2015-02-17T01:48:44.747 に答える