这个 OCAML 函数有什么问题?
What is wrong with this OCAML function?
这是我的原始代码。
let rec reverse l =
match l with
| [] -> []
| (h::t) -> (reverse t) :: h
cons ::
运算符将一个元素作为左侧参数,并将列表作为右侧参数。在这里,你反其道而行之。
在列表末尾的元素处添加元素的正确方法是使用列表连接:
let rec reverse l =
match l with
| [] -> []
| h :: t -> (reverse t) @ [h]
虽然该代码不是最优的,但您可能希望使其成为 tail recursive。
这是我的原始代码。
let rec reverse l =
match l with
| [] -> []
| (h::t) -> (reverse t) :: h
cons ::
运算符将一个元素作为左侧参数,并将列表作为右侧参数。在这里,你反其道而行之。
在列表末尾的元素处添加元素的正确方法是使用列表连接:
let rec reverse l =
match l with
| [] -> []
| h :: t -> (reverse t) @ [h]
虽然该代码不是最优的,但您可能希望使其成为 tail recursive。