typestar

Recursión en F#

rec permite la autorreferencia; el acumulador deja la llamada en cola.

// rec allows self-reference; an accumulator keeps the call a tail.
let rec countFrames acc hives =
    match hives with
    | [] -> acc
    | frames :: rest -> countFrames (acc + frames) rest

printfn "Yard total: %d frames" (countFrames 0 [8; 10; 6; 9])

// Mutual recursion needs and: two functions defined together.
let rec isEvenDay n = if n = 0 then true else isOddDay (n - 1)
and isOddDay n = if n = 0 then false else isEvenDay (n - 1)

printfn "Day 12 even? %b" (isEvenDay 12)
printfn "Day 7 even? %b" (isEvenDay 7)

Cómo funciona

  1. let rec countFrames acc hives pliega a mano.
  2. La llamada recursiva es la última expresión — pila constante.
  3. and une definiciones mutuamente recursivas.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
14
Caracteres a escribir
511
Tokens
95
Ritmo de tres estrellas
65 tpm

Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 88 segundos.

Escribe este fragmento

Paso 2 de 3 en Idiomas del lenguaje; paso 20 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →