私は関数met_devant_et_acc
をテール再帰的なものにしたいと思いますが、どのように書き直すことができるのか分かりません。 met_devant_et_acc l h
はリストl
のすべてのリストと要素h
を持つこれらの同じリストをすべて含むリストを1番目の要素として返すものとします。テール再帰的Ocamlプログラム
exは:met_devant h [ [ ]; ['x';'e']]
戻り[ ['h'] ; ['h';'x';'e'] ]
がここのコードです:met_devant_et_acc [ [1;2] ; [3;4] ]
は[ [9;1;2] ; [9;3;4] ; [1;2] ; [3;4] ]
let rec met_devant_et_acc l h = match l with
| [] -> [[]]
| a::t -> (met_devant h l) @ l;;
機能met_devant
は、リスト内のすべてのリストの先頭に要素h
を置くl
元ですmet_devant
let rec met_devant h l = match l with
| [] -> l
| a::b -> List.map (ajoute h) l;;
機能ajoute
は、リストの先頭l
let ajoute t l = match l with
| [] -> l
| a::b -> t::l;;
あなたはmet_devantが何をするかについて説明しますが、ないmet_devant_et_accを達成することになっているもの、また、あなたがそれテールにしたい理由をしています再帰的。 –
再帰呼び出しを含まない 'met_devant_et_acc'のコードを表示しています。 'met_devant'の助けが必要な場合は、その関数のコードを表示して、なぜ機能していないのかを説明する必要があります。 –
私の投稿をもう一度編集しました(もう一度)。申し訳ありません、私はそのサイトで新しいです、私は解決するために少し時間が必要ですが、私にそう助けてくれてありがとうございます – TheScientist