4

我正在尝试在 ocaml 中查找整数数组元素的索引。如何递归地做到这一点。示例代码:let a = [|2; 3; 10|];; 假设我想返回数组 a 中 3 的索引。任何帮助表示赞赏。我是 OCaml 编程的新手

4

3 回答 3

4
type opt = Some of int | None;;

let find a i =
  let rec find a i n =
    if a.(n)=i then Some n
    else find a i (n+1)
  in
  try 
    find a i 0
   with _ -> None
;;

测试

# find a 3;;
- : int option = Some 1
# find [||] 3;;
- : int option = None
# find a 12;;
- : int option = None
于 2015-11-28T21:03:12.910 回答
3

您使用索引递归地检查每个元素

let rec find a x n =
if a.(n) = x then n 
else find a x (n+1);;

find a x 0;;

如果元素不是数组的一部分,这将引发异常(当 n 大于数组的长度时)。

于 2015-11-28T18:09:24.000 回答
1
let f xs x =
  let i = ref (-1) in
  let () = Array.iteri (fun n elt -> if x = elt then i := n else ()) xs in
  !i

-1如果元素不在列表中,则返回值。

于 2015-11-28T19:20:38.613 回答