Se tienen dos números, "x" e "y", si son iguales retornar cualquiera de ellos.
Si x > y, hacer x = x-y;
Si x< y hacer x = y-x; y =x;
repetir hasta que x=y.
Creo que está basado en el algoritmo de Euclides. En lugar de implementarlo como un bucle, creé una función lambda recursiva:
Func<int, int, int> MCD = null;
MCD = (x, y) =>
{
if (x == y) return x;
if (x > y) return MCD(x - y, y);
if (x < y)
return 1;
};
La forma de llamarla es:
Console.WriteLine(MCD(15,45));
No hay comentarios:
Publicar un comentario