Factorial de un número

Hoy vamos a ver cómo se calcula el factorial de un número. Calcular factoriales es muy sencillo, vamos a ver en qué consiste:

¿Qué es la función factorial?

La función factorial se representa con un signo de exclamación “!” detrás de un número. Esta exclamación quiere decir que hay que multiplicar todos los números enteros positivos que hay entre ese número y el 1.

Por ejemplo:

factoriales 1

A este número, 6! le llamamos generalmente “6 factorial”, aunque también es correcto decir “factorial de 6”.

En tu calculadora podrás ver una tecla con “n!” o “x!”. Esta tecla te servirá para calcular directamente el factorial del número que quieras.

Algunos ejemplos de factoriales

Vamos a ver algunos ejemplos más de factoriales:

factoriales 2

Como ves, 100! es enorme…

Y, ¿qué hacemos con los números más pequeños? 1 factorial es, lógicamente, 1, ya que multiplicamos 1 x 1:

factoriales 3

Pero, ¿cómo podemos calcular el 0 factorial? Bueno, esto no tiene sentido cuando aplicamos la norma de que hay que multiplicar todos los números enteros positivos entre el 0 y el 1, ya que 0 x 1 es 0.

Al final, por convenio se ha acordado que lo más útil es que el 0 factorial sea igual a 1. Así que recuerda:

factoriales 4

¿Para qué podemos utilizar los factoriales?

Los números factoriales se utilizan sobre todo en combinatoria, para calcular combinaciones y permutaciones. A través de la combinatoria, los factoriales también se suelen utilizar para calcular probabilidades.

Vamos a ver un ejemplo sencillo de problema en el que podemos aplicar los factoriales:

factoriales 5

En este problema nos están pidiendo lo que se llama una permutación, es decir, que averigüemos todas las maneras posibles en las que estas 4 cartas se pueden combinar teniendo en cuenta el orden en el que las colocamos.

Si comenzamos haciendo todas las filas posibles comenzando con el as de diamantes, podemos hacer 6 combinaciones:

factoriales 6

También tendremos 6 combinaciones posibles con el de tréboles, con el de corazones y con el de picas, es decir, 6 combinaciones empezando con cada una de las 4 cartas: 4 x 6 = 24

factoriales 7

Utilizando la función factorial, podríamos haber resuelto el problema de forma mucho más sencilla:

Pensamos en una sola combinación de los 4 ases:

– Cuando hemos elegido el primero, ya solo nos quedan 3 para elegir

– Cuando hemos elegido el segundo, ya solo nos quedan 2 para elegir

– Cuando hemos elegido el tercero, ya solo nos queda 1 para elegir

Por lo tanto, todas las combinaciones posibles serán 4 x 3 x 2 x 1.

O lo que es lo mismo, 4! = 24




/*
* C#
*
*
Program to Generate the Factorial of  Given Number using for clause
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace factorial
{
    class Program
    {
        static void Main(string[] args)
        {
            int i, number, fact;
            Console.WriteLine("Enter the Number");
            number = int.Parse(Console.ReadLine());
            fact = number;
            for (i = number - 1; i >= 1; i--)
            {
                fact = fact * i;
            }
            Console.WriteLine("\nFactorial of Given Number is: "+fact);
            Console.ReadLine();
        }
    }
}

2. Using Recursion:

3. Using While loop:

1
2
3
4
5
6
7
8
9
10
public double factorial_WhileLoop(int number)
{
    double result = 1;
    while (number != 1)
    {
        result = result * number;
        number = number - 1;
    }
    return result;
}



//C++

#include  
using namespace std; int factorial(int n) {    if(n < 0) return 0;    else if(n > 1) return n*factorial(n-1);    return 1; } int main(void) {    int numero;    cout<<"ingresa un numero: ";    cin>>numero;    cout<<"Factorial de "<; }


//Java

import java.util.Scanner;

/**
*
* @author manuelantoniomonjarrezarias@gmail.com
*/

public class FactorialNumero {

/**
* @param args the command line arguments
*/

public static void main(String[] args) {
//Ej.: El factorial de 5 es: 5*4*3*2*1
long factorial=1;
int num;
Scanner numero = new Scanner(System.in);
System.out.print("Introduce un número: ");
num = numero.nextInt();
for (int i = num; i > 0; i--) {
factorial = factorial * i;
}
System.out.println("El factorial de " + num + " es: " + factorial);
}
}
//Python

# -*- coding: UTF-8 -*-
 
"""
Simple código que devuelve el factorial de un numero dado

Para calcular dicho valor, hay que multiplicar el numero dado, por su
antecesor mientas sea superior a 1

Ejemplo del factorial de 5 seria:
	5 * 4 * 3 * 2 * 1  = 120
"""
 
def factorial(x,n):
	"""
	Función recursiva que calcula el factorial
	Tiene que recibir:
		x=>El ultimo valor calculado
		n=>El numero a multiplicar
	"""
	if(n>0):
		# Se va llamando a ella misma mientras el valor sea superior a 0
		x=factorial(x,n-1)
		x=x*n
	else:
		x=1
	return x
 
try:
	numero = int(raw_input("inserta un numero "))
 
	# Ejecutamos la función recusiva para el calculo
	calculo=factorial(1,numero)
	print "El factorial de %s es %s" % (numero,calculo)
except:
	print "\nTiene que ser un valor numerico"

Comentarios