1

したがって、元のリストのすべての偶数インデックスが最初のリストを構成し、奇数インデックスが2番目のリストを構成するように、2つのリストに分割しようとしているリストがあります。これが私の解決策の試みですが、正しく返されません:

let rec separate xs =
  match xs with
    [] -> [],[]
  | x::y::xs -> x::separate xs, y::separate xs
  | x::[] -> x:: separate [], separate [];;
4

1 に答える 1

8

問題はseparate、リストのペアを返すことですが、書くときはリストをx::separate xs返すと想定しています(先頭に を追加しますx)。また、 の場合x::[]、結果はすでにわかっているため、 を再帰的に呼び出す必要はありませんseparate

どちらが得られますか:

let rec separate xs =
    match xs with
  | x::y::tail ->
        let a,b = separate tail in
        x::a, y::b
  | x::[] -> [x],[]
  | [] -> [],[];;

(さらに質問を投稿する場合は、コードを 1 行ではなく複数行に分けて、インデントを付けて投稿してください)。

于 2012-09-12T07:13:59.027 に答える