Aunque JavaScript tiene una función pow interna que calcula potencias de un número, puedes escribir una función parecida de manera recursiva, y puede ser muy eficiente. El único problema es que el exponente tiene que ser un número entero.
Supón que quieres calcular x, start superscript, n, end superscript, en donde x es cualquier número real y n es cualquier número entero. Es fácil si n es 0, ya que x, start superscript, 0, end superscript, equals, 1 sin importar qué valor tenga x. Ese es un buen caso base.
Así que ahora veamos qué pasa cuando n es positivo. Empecemos por recordar que cuando multiplicas potencias de x, sumas los exponentes: x, start superscript, a, end superscript, dot, x, start superscript, b, end superscript, equals, x, start superscript, a, plus, b, end superscript para cualquier base x y cualesquiera exponentes a y b. Por lo tanto, si n es positivo y par, entonces x, start superscript, n, end superscript, equals, x, start superscript, n, slash, 2, end superscript, dot, x, start superscript, n, slash, 2, end superscript. Si fueras a calcular y, equals, x, start superscript, n, slash, 2, end superscript de manera recursiva, entonces podrías calcular x, start superscript, n, end superscript como y, dot, y. ¿Qué pasa si n es positivo e impar? Entonces x, start superscript, n, end superscript, equals, x, start superscript, n, minus, 1, end superscript, dot, x, y n, minus, 1 es 0 o es positivo y par. Acabamos de ver cómo calcular las potencias de x cuando el exponente es 0 o positivo y par. Por lo tanto, podrías calcular x, start superscript, n, minus, 1, end superscript de manera recursiva, y después usar este resultado para calcular x, start superscript, n, end superscript, equals, x, start superscript, n, minus, 1, end superscript, dot, x.
¿Qué pasa cuando n es negativo? Entonces x, start superscript, n, end superscript, equals, 1, slash, x, start superscript, minus, n, end superscript, y el exponente minus, n es positivo. Así que puedes calcular x, start superscript, minus, n, end superscript de manera recursiva y tomar su inverso.
Al juntar estas observaciones, obtenemos el siguiente algoritmo recursivo para calcular x, start superscript, n, end superscript:
  • El caso base es cuando n, equals, 0 y x, start superscript, 0, end superscript, equals, 1.
  • Si n es positivo y par, calcula y, equals, x, start superscript, n, slash, 2, end superscript de manera recursiva y después x, start superscript, n, end superscript, equals, y, dot, y. Observa que puedes salirte con la tuya al hacer una sola llamada recursiva en este caso, al calcular x, start superscript, n, slash, 2, end superscript una sola vez y después multiplicar el resultado de esta llamada recursiva por sí misma.
  • Si n es positivo e impar, calcula x, start superscript, n, minus, 1, end superscript de manera recursiva de modo que el exponente sea 0 o positivo y par. Después, x, start superscript, n, end superscript, equals, x, start superscript, n, minus, 1, end superscript, dot, x.
  • Si n es negativo, calcula x, start superscript, minus, n, end superscript de manera recursiva de modo que el exponente se vuelva positivo. Después, x, start superscript, n, end superscript, equals, 1, slash, x, start superscript, minus, n, end superscript.

Este contenido es una colaboración de los profesores de Dartmouth Computer Science Thomas Cormen y Devin Balkcom, con el equipo de contenidos de computación de Khan Academy. El contenido está bajo licencia CC-BY-NC-SA.