Relacionado con esta cuestión , y este Proyecto de Euler del problema (Problema 99), me vino con un algoritmo recursivo para comparar dos números de la forma $x^y$ ( $x>1$ $y\ge 0$ ) sin uso explícito de los logaritmos.
Para comparar los $x_1^{y_1}$ o $x_2^{y_2}$ (lo que resulta en "$\lt$", "$=$", o "$\gt$"):
- Si $x_1=x_2$, compare $y_1$ $y_2$y devolver el resultado.
- Si $x_1\gt x_2$, compare $x_2^{y_2}$ $x_1^{y_1}$ y devolver el resultado opuesto.
- (Ahora $x_1 \lt x_2$.) Si $y_1\le y_2$, a continuación, volver "$\lt$".
- (Ahora $y_1 \gt y_2$.) Compare $x_1^{y_1-y_2}$ $\left(x_2/x_1\right)^{y_2}$y devolver el resultado.
El último paso se justifica señalando que $$ x_1^{y_1} - x_2^{y_2} = x_1^{y_2}\left(x_1^{y_1-y_2}-(x_2/x_1)^{y_2}\right), $$ de modo que la nueva comparación tiene el mismo resultado que el anterior; y el algoritmo converge, en el sentido de que los exponentes y las bases disminuyen en cada iteración (a $0$ $1$ respectivamente). Mi pregunta es, ¿qué es exactamente este algoritmo haciendo, y cómo muchas iteraciones debo esperar que tome para hacerlo? Parece que el método de Euclides para encontrar el máximo común divisor, un poco. Es allí una manera más precisa la correspondencia, y se la recorre en sentido?