Obtener factorial de un número con función PHP
Obtener factorial de un número con función PHP. En matemáticas, el factorial de un número entero no negativo n, denotado por n! Es el resultado de todos los enteros positivos menores o iguales a n. veamos un ejemplo pequeño; cómo explicar el factorial de cualquier número en el lenguaje php.
Descripción de la operación.
4! = 4 * 3 * 2 * 1 = 24
El factor entero positivo de un número se define como el producto del número y todos los números menores que él. Entonces, si tomas el número 4, el factorial de ese número es (24 =4 x 3 x 2 x 1)
.
En este artículo veremos cómo obtener el factorial de un número y usaremos la siguiente función de PHP para calcular el factorial de un número enviado desde un formulario HTML. Lo primero que hace es asegurarse de que el número sea mayor que 1.
Básicamente el código PHP lo realiza todo, veamos el ejemplo.
<?php $num1= $_POST["num1"]; echo 'El factorial del numero: '.$num1; function obtener_factorial($mi_fatorial) { if($mi_fatorial==1) return 1; else return $mi_fatorial * obtener_factorial($mi_fatorial-1); } ?>
Obtener factorial de un número con función PHP
Recursos para el funcionamiento de nuestro sistema
A continuación detallaremos los principales pasos acerca del sistema factorial.
a) Paso #01 Preparamos el formulario HTML.
<!doctype html> <html> <head> <meta charset="utf-8"> <title>Obtener el factorial de un numero</title> <style type="text/css"> *{ font-family:Segoe, "Segoe UI", "DejaVu Sans", "Trebuchet MS", Verdana, sans-serif} .main{ margin:auto; border:1px solid #7C7A7A; width:40%; text-align:left; padding:30px; background:#85c587} input[type=submit]{ background:#6ca16e; width:100%; padding:5px 15px; background:#ccc; cursor:pointer; font-size:16px; } </style> </head> <body bgcolor="#bed7c0"> <div class="main"> <h1>Obtener el factorial de un número</h1> <br> <form action="factorial.php" method="POST"> <p>Introduce un numero : <input type="text" name="num1"></p> <input type="submit" value="Enviar" name="enviar"> </form> </div> </body> </html>
b) Paso #02 Trabajamos el envio del formulario con PHP.
<!doctype html> <html> <head> <meta charset="utf-8"> <title>Factorial de un número</title> <style type="text/css"> *{ font-family:Segoe, "Segoe UI", "DejaVu Sans", "Trebuchet MS", Verdana, sans-serif} .main{ margin:auto; border:1px solid #7C7A7A; width:40%; text-align:left; padding:30px; background:#85c587} input[type=submit]{ background:#6ca16e; width:100%; padding:5px 15px; background:#ccc; cursor:pointer; font-size:16px; } </style> </head> <body bgcolor="#bed7c0"> <div class="main"> <h1>El Factorial del número es:</h1> <br> <?php $num1= $_POST["num1"]; echo 'El factorial del numero: '.$num1; function obtener_factorial($mi_fatorial) { if($mi_fatorial==1) return 1; else return $mi_fatorial * obtener_factorial($mi_fatorial-1); } ?> <br><br> <div style="border:1px solid #000000; text-transform:uppercase"> <h3 align="center">El resultado es: <?php echo obtener_factorial($num1);?></h3></div> <br> <div align="center"><a href="factorial.html">Volver </a></div> </div> </body> </html>
¿Cómo funciona este sistema?
Su funcionamiento es algo básico. Si observamos, solo necesitamos:
- Un formulario HTMl5. Un fichero llamado index.php en el cual albergara un formulario para solicitar al usuario que ingrese un número. Sin embargo, este número será enviado a otro fichero para ser procesado.
- Un fichero PHP para que procese la información a través de una función. Este fichero es el motor de este pequeño sistema porque será el encargado de procesar la información a través de una función y devolverá un resultado en el navegador web.
La función encargada de realizar la operación.
<?php function obtener_factorial($mi_fatorial) { if($mi_fatorial==1) return 1; else return $mi_fatorial * obtener_factorial($mi_fatorial-1); } ?>
Resultado final en el navegador mostrado en una imagen.
CONCLUSIÓN
Como pueden apreciar en este artículo es muy sencillo obtener el factorial de un número usando el lenguaje PHP. Por lo tanto, si tienen problemas les dejare un archivo comprimido para que puedan descargarlo.
Espero que esta breve explicación les sirva bastante y si tienen cualquier duda dejenlo en los comentarios.
Referencias
Ver Demo
Creo que la condición (if $mi_fatorial==1) que planteas no es funcional completamente, ya que si en el input pongo el numero cero se genera un desbordamiento de memoria (Allowed memory size exhausted), porque cero nunca va ser igual a 1, lo adecuado seria que la condición fuese ( if $mi_fatorial<=1) ya que matemáticamente 0! =1, obviando lo anterior me gusta tu propuesta mediante función recursiva, ya que muchas otras soluciones en internet lo resuelven con un for.