0votos

Doble factorial n!! en F#

por jmgomez hace 3 años

Defino el operador !! Así para hallar el factorial de un número bastaría con escribir !!n donde n es el número del que queremos hallar el factorial.

Algoritmo del doble factorial de un numero en lenguaje c Si n es par entonces se multiplican los pares hasta el 2 es decir 8!!=8x6x4x2 Si n es impar entonces se multiplican todos los impares hasta el 1 ejemplo 7!!=7x5x3x1 Si n =0 o n=-1 el resultado es 1 es decir 0!!=1 -1!!=1

1
2
3
4
5
6
7
8
9
10
let (!!) (n:int) =  
    let x = abs(n) 
    match x with 
    | 0 | 1 -> 1 
    | _ -> [x%2+2..x] |> List.filter (fun y->y%2=x%2) |> List.reduce(fun y z->y*z) 
 
Ejemplo de salida: 
!!0 = 1 
!!(-1) = 1 
!!8 = 384 

Comenta la solución

Tienes que identificarte para poder publicar tu comentario.