Elaborar un programa a partir de un algoritmos, diagrama de flujo y código en Java que defina el número combinatorio de m sobre n de la siguiente forma:
![]()
Análisis
En la formula anterior observamos que para determinar el número combinatorio será necesario crear una función para determinar el factorial.
Factorial
El algoritmo del factorial lo vamos a definir de la siguiente forma:

Variables:
Vamos a necesitar tres variables: Nombre y Tipo de dato.
- i: Entero
- resultado: Entero
- numero: Entero
Algoritmo:
- Asignar 1 a resultado
- Asignar 1 a i
- Obtener un número
- Asignar el número a la variable numero
- multiplicar resultado por i
- Asignar resultado a resultado
- Incrementar 1 en i
- Si i es mayor o igual que numero continua de lo contrario regresa al paso 5
- Retorna resultado
No olvides hacer la prueba de escritorio.
Diagrama de flujo:
Imagen pendiente
Código en Java
public static int factorial(int n) {
int numero = n;
int resultado = 1;
int i = 1;
do {
resultado *= i;
i++;
}while(i <= numero);
return resultado;
}Número combinatorio
Teniendo la función de factorial podemos continuar elaborando la función combinatorio.
Sin embargo tal vez no se requiera un algoritmo como el de la función factorial ya que es una simple división de factoriales como se muestra en la formula, ni tampoco considero que se requiera un diagrama de flujo y la prueba de escritorio. Vallamos directo al código.
![]()
Código en Java
public static int combinatorio(int m, int n) {
int resultado = 0;
resultado = factorial(m) / (factorial(n) * factorial(m - n));
return resultado;
}Código completo
El código completo queda de la siguiente forma:
package org.luisalberto.laboratorio.practica2;
public class NumeroCombinatorio {
public static int factorial(int n) {
int numero = n;
int resultado = 1;
int i = 1;
do {
resultado *= i;
i++;
}while(i <= numero);
return resultado;
}
public static int combinatorio(int m, int n) {
int resultado = 0;
resultado = factorial(m) / (factorial(n) * factorial(m - n));
return resultado;
}
public static void main(String[] args) {
System.out.println("Combinatorio de (3 3) = " + combinatorio(3, 3));
System.out.println("Combinatorio de (8 3) = " + combinatorio(8, 3));
System.out.println("Combinatorio de (10 4) = " + combinatorio(10, 4));
}
}$ javac -d . NumeroCombinatorio.java $ java org.luisalberto.laboratorio.practica2.NumeroCombinatorio Combinatorio de (3 3) = 1 Combinatorio de (8 3) = 56 Combinatorio de (10 4) = 210