Tips: cómo resolver el cálculo de un factorial usando recursividad (PHP7)


Por lo general no es muy común que en PHP, y trabajando con sistemas comerciales, tengamos que implementar soluciones recursivas. Pero como tampoco es imposible, les paso un ejemplo. Tengamos en cuenta que aunque parezca obvio:

a) el problema debe ser "un problema recursivo" (que tenga sentido aplicar la recursividad)

b) cuando se trabaja con recursión, debe existir el caso "resoluble directo", que permite salir de la recursión (o entraríamos en loop infinito).

El ejemplo más clásico es el cálculo de un factorial. Si factorial de 5 se calcula 1 x 2 x 3 x 4 x 5, por lo tanto podemos hacer un método que reciba el número a calcular, y posteriormente se va a ir llamando a sí mismo restando 1, hasta llegar al caso "resoluble directo", es decir 0, posteriormente iniciará el retorno recursivo y haciendo el cálculo "al revés" de la invocación inicial (revisar ejecución al final del ejemplo).

PD: de paso, lo hacemos usando PHP 7 o superior. Si bien en este ejemplo no se aprovecha mucho, está bueno que nos empecemos a acostumbrar a las nuevas funcionalidades que trae (como en este caso, la validación de tipos tanto en el input como en el output).

/**
 * Cómo resolver el cálculo de un factorial usando recursividad
 *
 * factorial de 5 = 1 x 2 x 3 x 4 x 5
 *
 */


class Factorial{
  
    public function 
calcular(int $numero) : int
    {
      
        if (
$numero 0) {
          
            
// entro en la recursividad ...
            
$aux $this->calcular($numero 1);
          
            
$calculo $aux $numero;
            echo 
"$aux * $numero = $calculo \n";
          
            return 
$calculo;
        } else {
            
// caso resoluble directamente ...
            
return 1;
        }
    }
}


$factorial = new Factorial();

echo 
"resultado = " $factorial->calcular(5) . " \n";


// Ejecución

php index.php 

1 * 1 = 1 
1 * 2 = 2 
2 * 3 = 6 
6 * 4 = 24 
24 * 5 = 120 
resultado = 120 

Espero que les resulte útil! ;-) 

Espero todas sus dudas! 


PHP 7.1: cómo instalarlo en Ubuntu

Para quienes quieren probar PHP 7.1 en Ubuntu, ya que actualmente no está disponible como paquete oficial de instalación, pueden seguir los siguientes pasos:


sudo add-apt-repository ppa:ondrej/php

sudo apt-get update

sudo apt-get upgrade

(optional) sudo apt-get remove php7.0

sudo apt-get install php7.1


Anexo (otros paquetes que puedes necesitar)


sudo apt-get install php7.1-mbstring


sudo apt-get install php7.1-xml

Instalación probada en Ubuntu 16.04 / 17.04 LTS sin problemas.

Saludos! 

Entradas populares