obtener el mayor factor primo en F#

Tenía VS 11 beta y el siguiente código funcionaba sin problema:

let rec fac x y =
    if x = y then y
    elif x % y = 0I then fac (x / y) y
    else fac x / (y + 1I)

Ahora instalé VS 2012 RC y me sale el siguiente error:

The type 'System.Numerics.BigInteger -> System.Numerics.BigInteger' is not compatible with the type 'System.Numerics.BigInteger'

¿El código no es correcto o F# es interactivo? Es F # 3.0.

EDITAR:

En realidad, el problema no está en F #, sino en mi código, debería ser:

else fac x (y + 1I)

Acabo de guardar una versión incorrecta, cuando trabajé en VS 11.

preguntado el 01 de julio de 12 a las 16:07

1 Respuestas

fac espera dos números, así que cuando tenga fac x, no es un número y, por lo tanto, no se puede dividir por un número.

Respondido 01 Jul 12, 16:07

parece que tampoco hubiera funcionado con VS 11 beta. ¿Quizás Alex agregó el operador '/' en algún momento sin recordarlo? Si es así, tal vez la pregunta debería actualizarse para reflejar eso, ya que de lo contrario podría ser engañoso. - mate

@mattgately Cualquier visitante futuro podría leer la pregunta corta, la respuesta corta y el comentario corto de Alex y comprender lo que sucedió aquí. No creo que haya necesidad de una edición, tampoco recuerdo haber visto un precedente para eso. - Ramón Snir

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.