Extra Block Types (EBT) - Nueva experiencia con Layout Builder❗

Extra Block Types (EBT): tipos de bloques con estilo y personalizables: Presentaciones de diapositivas, Pestañas, Tarjetas, Acordeones y muchos más. Configuraciones integradas para fondo, DOM Box y plugins de JavaScript. Experimenta hoy el futuro de la construcción de diseños.

Módulos de demostración EBT Descargar módulos EBT

❗Extra Paragraph Types (EPT) - Nueva experiencia con Paragraphs

Extra Paragraph Types (EPT): conjunto de módulos basado en párrafos de forma análoga.

Módulos de demostración EPT Descargar módulos EPT

Scroll

Lecciones de PHP - Lección 9 - Recursión

10/05/2025, by Ivan

En la lección anterior vimos cómo usar funciones en PHP. Ahora vamos a profundizar un poco más en su uso. Hasta ahora, hemos trabajado con funciones de esta forma:

<?php
function myFunction(){ // definición de la función

}

$x = myFunction(); // llamada a la función
?>

¿Pero qué ocurre si llamamos a una función desde dentro de sí misma?

<?php
function myFunction(){
  $x = myFunction();
  ...
  return $x;
}

$y = myFunction();

Una llamada a una función desde su propio cuerpo se llama recursión. Aunque suena complejo en teoría, en la práctica es mucho más sencillo.

Vamos a crear una función para calcular potencias. Como recordarás del álgebra, elevar un número a una potencia significa multiplicarlo por sí mismo varias veces. En PHP esto se ve así:

<?php
function myDegree($x, $n){
  if($n == 0){
    return 1;
  }
  if($n < 0){
    return myDegree(1/$x, -$n); // -$n cambia el signo a positivo
  }
  return $x * myDegree($x, $n-1); // llamada recursiva
}

$y = myDegree(2, -4); // primera llamada a la función
print $y;
?>

Vamos a analizar esta función en detalle. Recuerda que después de la instrucción return, la función termina y devuelve el valor indicado.

Primero: if($n == 0) — si el exponente es 0, devolvemos 1. Esto es correcto porque cualquier número elevado a 0 es 1.

Segundo: if($n < 0) — si el exponente es negativo, lo convertimos en positivo y usamos el inverso del número. Esto también es correcto según la definición matemática de potencias con exponente negativo.

Finalmente, si el exponente no es 0 ni negativo, multiplicamos el número por el resultado de llamar nuevamente a la función con el exponente reducido en 1.

Veamos cada iteración (repetición) de esta función:

1. Exponente -4, número 2.

Se ejecuta el segundo if, el número se convierte en fracción, y el exponente en positivo.

2. Exponente 4, número 0.5.

Se entra en la recursión:

return $x * myDegree($x, $n-1)

3. Exponente 3, número 0.25.

4. Exponente 2, número 0.125.

5. Exponente 1, número 0.0625.

Ahora se activa el primer if, se devuelve 1 y la función va multiplicando hacia atrás todos los resultados anteriores. Ya no hay más recursión.

Veamos otro ejemplo: el factorial. El factorial de un número n es el producto de todos los enteros positivos desde 1 hasta n. Por ejemplo, el factorial de 6 es 6×5×4×3×2×1 = 720. Como ya habrás adivinado, lo haremos con recursión.

<?php
function myRecursion($x){
  if($x == 1){
    return $x;
  }
  return $x * myRecursion($x-1);
}

$y = myRecursion(8);
print $y;
?>

Este ejemplo es aún más simple que el anterior, así que te dejo a ti el análisis de cómo cambian los parámetros en cada llamada recursiva.