Esto se llama algoritmo de “cuadrado y multiplicación”. La idea es realmente bastante simple. Podemos construir cualquier número natural comenzando desde cero y duplicando o sumando uno repetidamente, según la representación binaria del número. Por ejemplo, 25 es 11001 en la base 2, y leer de izquierda a derecha, eso significa que comenzamos con cero, y luego:
- 1 significa “doblar y sumar 1”, entonces obtenemos 1;
- 1 significa “doblar y sumar 1”, entonces obtenemos 3;
- 0 significa “doble”, entonces obtenemos 6;
- 0 significa “doble”, entonces obtenemos 12;
- 1 significa “doblar y sumar 1”, por lo que obtenemos 25.
Podemos construir cualquier poder usando la cuadratura y multiplicación repetidas usando el mismo motivo. Para elevar b a la potencia 25, comenzaríamos con la unidad (que es b ^ 0) y:
- cuadrado y multiplicar por b, dando b ^ 1;
- cuadrado y multiplicar por b, dando b ^ 3;
- cuadrado, dando b ^ 6;
- cuadrado, dando b ^ 12;
- cuadrado y multiplicar por b, dando b ^ 25.
La función recursiva que se muestra en los detalles de la pregunta es una implementación de este algoritmo; Simplemente sucede que va de arriba hacia abajo en lugar de de abajo hacia arriba. Es decir, para calcular b ^ 12, decimos “Calcularé recursivamente b ^ 6 primero y luego lo elevaré al cuadrado”.
- ¿Cuál es el mejor sistema operativo en caso de seguridad?
- ¿Es la disciplina de la ciencia biomédica diferente de la ciencia de laboratorio clínico?
- ¿Cuáles son las ventajas y desventajas de utilizar Google App Engine y Heroku en este momento?
- ¿Cuánto tiempo le tomará a la IA tomar conciencia de sí mismo?
- ¿Cuál es la historia del aprendizaje automático?