Curso 2024/2025
double potenciaNoNegativa(double base, int exponente) { if (exponente == 0) return 1; double resultado = potenciaNoNegativa(base, exponente / 2); if (exponente % 2 == 0) return resultado * resultado; else return resultado * resultado * base; } double potencia(double base, int exponente) { if (exponente < 0) return 1 / potenciaNoNegativa(base, -exponente); else return potenciaNoNegativa(base, exponente); }
Se podría hacer en una sola función lo que en la solución anterior se ha separado en dos funciones. En este caso, al separarlo así en dos funciones, ganamos que la comprobación de si el exponente es negativo se haga una sola vez en vez de hacerse en cada llamada recursiva.