En un ejercicio de la facultad me pidieron hacer un función recursiva que encuentre el Maximo común divisor entre dos números por medio de restas. Ahora, esto que parece un simple ejercicio en realidad se engancha con un montón de temas interesantes de la historia de la matemática. Bueno, lo primero que se me ocurrió fue factorizar los dos números y después buscar los factores comunes, obviamente esta idea no es lo que se dice fácil ( quizás hasta imposible ) de hacer recursivamente. Se me ocurrió investigar un poco y encontré el Algoritmo de Euclides. La implementación básica en Haskell es:

algEuclid :: Int -> Int -> Int
algEuclid a b	| c < 0 	= algEuclid b a
		| c == 0	= b
		| c >= b 	= algEuclid c b
		| c < b		= algEuclid b c
		where c = a - b

La versión en Haskell es super clara, pero se me pedía implementarla en Java y quedo así:

public class Ej {

	public static void main (String[] args) {
		//Ej8. Maximo Comun Divisor de 2 numeros
		System.out.println(”Ej8:”);
		System.out.println( TP4.algEuclid(64, 48));
	}


	public static int algEuclid( int a, int b) {
		int c = a - b;
		if ( c < 0) {
			return algEuclid(b, a);
		} else if (c == 0) {
			return b;
		} else if ( c >= b ) {
			return algEuclid(c, b);
		} //(c < b)
			return algEuclid(b, c);
	}
	
}

Lo interesante es que Euclides hace su demostración en términos puramente geométricos y en términos geométricos existen magnitudes a las que no es posible aplicarles esta formula. En particular raíz cuadrada de 2, es decir que no son conmensurables. Esto tuvo profundas implicancias en el desarrollo de la matemática, porque durante siglos al existir relaciones que no podían ser expresadas puramente en números (tal y como pretendían los pitagóricos) los griegos decidieron priorizar la geometría sobre otras formas de razonamiento matemático. Fue necesario un salto de paradigma, en el sentido de Kuhn, a saber la aceptación de los números irracionales como objetos matemáticos por derecho propio para poder continuar avanzando en diversas áreas de la matemática.

En definitiva, si la historia de las matemáticas demuestra algo, es que si hay algo que no podemos entender actualmente o que parece que nos lleva a un callejón sin salida, en algún momento quizás con un enfoque nuevo probablemente podremos integrarlo a un sistema explicativo de orden superior.

Referencias

Journey through Genius: The Great Theorems of Mathematics; William Dunham; Penguin Books; 1990