Factorial

Factorial

De Wikipedia, la enciclopedia libre

n n!
0 1
1 1
2 2
3 6
4 24
5 120
6 720
7 5.040
8 40.320
9 362.880
10 3.628.800
15 1.307.674.368.000
20 24.32.902.008.176.640.000
25 15.511.210.043.330.985.984.000.000
50 3,04140932... × 1064
70 1,19785717... × 10100
450 1,73336873... × 101.000
3.249 6,41233768... × 1010.000
25.206 1,205703438... × 10100.000
100.000 2,8242294079... × 10456.573

Tabla de contenidos

[editar] Definición

Para todo número natural n, se llama n factorial o factorial de n al producto de todos los naturales entre 1 y n:

 n! = 1 \times 2 \times 3 \times 4 \times ... \times (n-1) \times n \,

Que de un modo resumido, se puede expresar como:

 n! = \prod_{k=1}^n k

Se define 0! = 1, para que la relación n! = n × (n − 1)! sea también válida para n = 1. Esta relación permite definir los factoriales por recursividad. La notación n! fue popularizada por el matemático francés Christian Kramp.


n!=
\begin{cases} 
\mbox{si }n=0 & \Rightarrow 1  \\ 
\mbox{si }n \geqslant 1 & \Rightarrow (n-1)! \cdot n
\end{cases}

Los factoriales se usan mucho en la rama de la matemática llamada combinatoria, a través del binomio de Newton, que da los coeficientes de la forma desarrollada de (a + b)n:

(a + b)n = an + n × an − 1 × b + Cn, 2 × an − 2 × b2 + ... + n × a × bn − 1 + bn

con: C_{n,k} = \begin{pmatrix} n \\ k \end{pmatrix} = \frac{n!}{(n - k)! \cdot k!}

Por medio de la combinatoria, los factoriales intervienen en el cálculo de las probabilidades. Intervienen también en el ámbito del análisis, en particular a través del desarrollo polinomial de las funciones (fórmula de Taylor). Se generalizan a los reales con la función gamma, de gran importancia en el campo de la aritmética.

Para valores grandes de n, existe una expresión aproximada para el factorial de n, dado por la fórmula de Stirling:

n!\approx \sqrt{2 \pi n} \left ( \frac{n}{e} \right )^{n}

La ventaja de esta fórmula es que no precisa inducción y, por lo tanto, permite evaluar n! más rápidamente cuando mayor sea n.


El factorial de n es generalizado para cualquier número real n por la Función gamma de manera que

n!=\int^\infty_0t^ne^{-t}dt=\Gamma(n+1)

[editar] Doble factorial

De manera similar, se define


 \begin{align}
  0!! &= 1;\\
  1!! &= 1;\\
  n!! &= n(n-2)!!\quad\mathrm{si}\ n>=2
 \end{align}

Los dobles factoriales, se relacionan con el factorial de la sigiente manera:

  1. Si n = 2k,
     (2k)!! = 2^k\,k!
  2. Si n = 2k + 1,
     (2k+1)! = (2k+1)!!\cdot(2k)!!

y por la expresión anterior,

  1. (2k+1)!! = \frac{(2k+1)!}{2^k\,k!}

[editar] Implementación en lenguajes de programación

[editar] Factorial

[editar] BASIC

'Función Factorial usando recursividad
Public Function Factorial(ByVal num As Integer) As Integer
    If num = 1 Or num = 0 Then
        Return 1
    Else
        Return num * Factorial(num - 1)
    End If
End Function
 
'Función Factorial usando un ciclo For .. Next
Public Function Factorial(ByVal num As Integer) As Integer
    Dim I As Long
    Dim Fact As Integer = 1
    If num = 0 Then
        Return 1
    Else
        For I = 1 To num
            Fact *= I
        Next
        Return Fact
    End If
End Function

[editar] BASIC

factorial = 1
FOR i = 1 TO n
    factorial = factorial * i
NEXT

[editar] Bash

declare -i FACTORIAL
 
function factorial
{
    declare -i N=$1
 
    if [ $N -eq 0 ]; then
        FACTORIAL=1
    else
        factorial $N-1
        FACTORIAL=$N*$FACTORIAL
    fi
    return
}

[editar] C

int factorial(int n)
{
    if(n == 0)
        return 1;
    else
        return factorial(n-1)*n;
}

[editar] Borland Delphi

program MyFact;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils;
 
 
function Factorial( Numero: Integer): Integer;
var
  i, s: Integer;
begin
 
 s := 1;
 
 if(Numero <> 0) then
 begin
  for i := Numero downto 1 do
   s := s * i;
 end;
 
 Result := s;
end;
 
 
var
 n, x : Integer;
begin
 
  Write('Por favor introduzca numero: ');
  Readln(n);
 
  x := Factorial(n);
  WriteLn('El factorial de "' + IntToStr(n) + '" es: ' + IntToStr(x));
 
  Readln;
 
end.

[editar] Java (Applet)

import java.util.*;
import java.io.*;
import java.math.*;
public class factorial {
public static double factorial(double n){
        if(n!=0){
 
        return(n+factorial(n-1));
        }
        public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        System.out.print("introduce el numero:  ");
        double n = sc.nextDouble();
    System.out.print("El factorial es:      "+factorial(n));
 
        }   
}
GMO

[editar] Python

def factorial(n):
     if n == 0:
         return 1
     else:
         return n*factorial(n-1)

[editar] Ruby

def factorial(n)
   if n == 0
     1
   else
     n * factorial(n-1)
   end
 end


[editar] Enlaces externos


El contenido de esta página (o parte de ella) fue extraído de wikipedia y puede redistribuirse libremente bajo la licencia de documentación libre GNU