una primer posicion obtener objeto metodo listas lista indice elemento como buscar list find ocaml ml memory-consumption

posicion - obtener el primer elemento de una lista en java



Encontrar un elemento en una lista y devolver su índice-OCaml (1)

Su función consume espacio constante (O (1)), porque es cola recursiva.

Puede leer sobre recursividad de cola en OCaml.org, aquí .

Actualizar

Aquí hay una solución sin recursividad de cola:

exception Failure of string let rec find x lst = match lst with | [] -> raise (Failure "Not Found") | h :: t -> if x = h then 0 else 1 + find x t

(Me di cuenta de que PatJ ya lo explicó, lo siento :-)

A menudo, la solución recursiva sin cola es más concisa y elegante. Es una lástima, pero así es el mundo a veces.

He escrito la siguiente función para encontrar un elemento dado "x" en una lista dada "lst" y devolver su índice si se encuentra, de lo contrario devolvería un error:

exception Failure of string let rec func x lst c = match lst with | [] -> raise(Failure "Not Found") | hd::tl -> if (hd=x) then c else func x tl (c+1) let find x lst = func x lst 0

La función está funcionando completamente, solo me pregunto cuál es el consumo de memoria de ella. ¿Significa que el consumo de memoria depende de la longitud de la lista? o es O (1)?

Si no es O (1) ¿alguien puede decirme qué debo hacer para que así sea?

Gracias