如何在 OCaml 中查找数组元素的索引
How to find index of an Array element in OCaml
我正在尝试在 ocaml 中查找整数数组元素的索引。如何递归执行此操作。
示例代码:let a = [|2; 3; 10|];;
假设我想 return 数组 a 中 3 的索引。任何帮助表示赞赏。我是 OCaml 编程新手
您使用索引递归检查每个元素
let rec find a x n =
if a.(n) = x then n
else find a x (n+1);;
find a x 0;;
如果元素不是数组的一部分,则会引发异常(当 n 大于数组的长度时)。
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
如果元素不在列表中,return 值将为 -1
。
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
我正在尝试在 ocaml 中查找整数数组元素的索引。如何递归执行此操作。
示例代码:let a = [|2; 3; 10|];;
假设我想 return 数组 a 中 3 的索引。任何帮助表示赞赏。我是 OCaml 编程新手
您使用索引递归检查每个元素
let rec find a x n =
if a.(n) = x then n
else find a x (n+1);;
find a x 0;;
如果元素不是数组的一部分,则会引发异常(当 n 大于数组的长度时)。
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
如果元素不在列表中,return 值将为 -1
。
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