Calcular factorial de un numero en JAVA

Hoy día 1 de enero de 2013, empezamos el año con un ejercicio resuelto muy sencillo, calcular el factorial de un número dado. Para ello solo debemos tener en cuenta la definición de factorial, que a groso modo es el producto de todos los números enteros positivos naturales desde 1 hasta n.
n! = 1 x 2 x 3 x ... x (n - 1) x n
Factorial en Java
Sin más os dejo con este sencillo ejercicio, y ya sabéis, si tenéis alguna duda, comentad aquí abajo ;).
public class Factorial {

    public static void main(String[] args) {
        System.out.println(factorial(5));
    }

    public static int factorial(int n) {
        int resultado = 1;
        for (int i = 1; i <= n; i++) {
            resultado *= i;
        }
        return resultado;
    }
}

Comentarios

  1. disculpe no hay que poner:
    String loQueLeoDelTeclado1;
    BufferedReader conexion = new BufferedReader(new InputStreamReader(System.in));
    System.out.println("Introduzca un entero: ");
    loQueLeoDelTeclado1 = conexion.readLine();
    Y= Integer.parseInt(loQueLeoDelTeclado1);

    //Fin código necesario para leer del teclado.
    Gracias.

    ResponderEliminar
    Respuestas
    1. La finalidad del ejemplo es calcular el factorial de un número dado de modo que no es necesario que lo introduzca el usuario. De este modo se crea una función llamada factorial que recibe un int dando igual cual sea su procedencia, esto hace que nuestra función sea totalmente reutilizable.

      Por ejemplo para el caso de calcular el factorial de un número introducido por el usuario (para esto se podría utilizar tu código), para un número recibido en un socket TCP, un número leido de un fichero, etcétera.

      Tu código es correcto, lee un número introducido por el usuario por entrada estandar, pero la finalidad del ejercicio era resolver el problema dándonos igual de donde procedan los datos de entrada.

      Saludos.

      Eliminar
    2. Muchas Gracias Muchacho, por solucionarme la duda. Saludes desde Almeria.

      Eliminar
  2. si, esa era mi misma duda, por favor responda cuanto antes, gracias

    ResponderEliminar
  3. como calculas el factorial cuando se introduce desde el teclado

    ResponderEliminar
    Respuestas
    1. Utiliza el código del primer comentario y mi código, uno lee del teclado y el otro calcula el factorial de un número dado.

      Saludos.

      Eliminar
    2. for (int counter = 0; counter <= 10; counter++){
      System.out.printf("%d! = %d\n", counter,
      factorial(counter));
      }
      }
      public static long factorial(long number) {
      if (number <= 1)
      return 1;
      else
      return number * factorial(number - 1);
      }
      }

      Eliminar
  4. En el main, para probarlo es mas facil si se pone este codigo, o por lo menos mas entendible para mi.. :D

    Scanner sc = new Scanner(System.in);
    System.out.println("Introduzca un numero para calcular su factorial");
    Integer a = sc.nextInt();
    System.out.println(factorial(a));
    sc.close();

    ResponderEliminar
    Respuestas
    1. pero marca dos errores, porque?

      System.out.println(factorial(a));
      sc.close();

      Eliminar
    2. Copia y pega los errores que estás obteniendo y quizás pueda echarte una mano.

      Eliminar
  5. quiero hacerlo con JOptionPane input y show

    ResponderEliminar
  6. quiero hacerlo con JOptionPane input y show

    ResponderEliminar
    Respuestas
    1. public class Factorial {




      public static void main(String[] args) {
      int n ;
      String r="";

      n=Integer.parseInt(JOptionPane.showInputDialog(" Factorial de numero: "));
      // System.out.println(factorial(n));
      JOptionPane.showMessageDialog(null, "Factorial de es igual " +(factorial(n)));
      }

      public static int factorial(int n) {
      int resultado = 1;
      for (int i = 1; i <= n; i++) {
      resultado *= i;
      }
      return resultado;
      }
      }

      Eliminar
  7. import java.util.Scanner;

    public static void main(String args[]){

    Scanner s = new Scanner(System.in);

    int suma = 1;

    System.out.print("ingrese el Numero ");

    int n = s.nextInt();

    for (int i = n; i>1; i--){

    suma = suma * i;
    }

    System.out.println("el Factorial de el numero" +n+ " es " + suma );





    }



    }

    ResponderEliminar
  8. esto es para cuando se te pide el factorial de un numero dado por el usuario

    import java.util.Scanner;

    public static void main(String[] args) {
    /*programa que muestre el factorial de un numero dado por el usuario*/

    Scanner leer= new Scanner(System.in);
    int n,fact = 1,i;

    System.out.println("dame un numero que quieras y sacare su factorial");
    n=leer.nextInt();

    for (i=n;i>=1;i--)
    {
    fact=fact*i;
    }
    System.out.println("el factorial de tu numero es -> "+ fact);
    }

    }





    espero y les sirva :D

    ResponderEliminar
  9. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  10. alguien puede indicarme una pagina o mas bien enviarme un documento para la progamacion en java porfavor y muchas gracias.

    ResponderEliminar
    Respuestas
    1. SI SI SI SI....
      for (int counter = 0; counter <= 10; counter++){
      System.out.printf("%d! = %d\n", counter,
      factorial(counter));
      }
      }
      public static long factorial(long number) {
      if (number <= 1)
      return 1;
      else
      return number * factorial(number - 1);
      }
      }
      AHI ESTA CON ESTO ARREGLAS EL MUNDO CAMARA ;)

      Eliminar
  11. alguien puede indicarme una pagina o mas bien enviarme un documento para la progamacion en java porfavor y muchas gracias.

    ResponderEliminar
  12. DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE

    ResponderEliminar
  13. FISTA EN CASA DE IVETTE EN GUANAMELA O SIIIIII¿ HOY A LAS OCHO?
    ENTRADA LIBRE

    ResponderEliminar
  14. Lo que hay liado aqui en los comentarios es sublime (sublime text). JAJAJAJAJAJ

    ResponderEliminar
  15. /* 50. Leer una secuencia de 10 números y almacenar en un vector sus factoriales.*/
    package sweetie_bot;
    import java.util.Scanner;
    public class Ejercicio_50 {
    public static void main (String [] args){
    Scanner Leer = new Scanner (System.in);
    int v[]; int f[]; int a = 1;
    v = new int [10]; f = new int [10];
    System.out.println("\tBIENVENIDO");
    System.out.println("Por Favor, ingrese 10 elementos\n");
    for (int i=0; i<10; i++){
    v[i] = Leer.nextInt();
    }
    for (int i=0; i<10; i++){
    a = 1;
    for(int j=v[i]; j>=1; j--){
    a = (a * j);
    f[i] = a;
    }
    }
    System.out.println("\nLos Factoriales son");
    for (int i=0; i<10; i++){
    System.out.println(f[i]);
    }
    }
    }

    ResponderEliminar
  16. Hola disculpa como lo puedes hacer igual pero que lo haga en 3 procesos, espero me respondas

    ResponderEliminar

Publicar un comentario

Si tenéis alguna duda o sugerencia, no dudéis en comentar. ;)

Entradas populares de este blog

Ordenar cualquier array con SORT en JAVA

Modificadores de acceso (public, protected y private) JAVA