Bom dia!
É o seguinte galera, eu estou iniciando em java e gostaria de fazer um programa que calcule a combinaçao numerica de 2 numeros, a fórmula para isso é:
C= n!/r!*(n-r)! traduçao: Combinaçao é igual a fatorial de n dividido pelo fatorial de r ,vezes o n menos r fatorial
eu dei uma pesquisada na internet e em alguns foruns aqui, e depois de muito quebrar a cabeça eu consegui parcialmente resolver o problema
acontece q quando eu digito um valor muito alto como n=50 e r=5 o programa me retorna sempre o numero 1
se alguem pudes da uma ajuda eu agradeco. estou usando o netbeans 6.8, segue o código.
[code]package combinacao;
import javax.swing.JOptionPane;
public class Main { private static String alertmessage;
public static void main(String[] args) {
int n_r ,r, n, i;
long comb, fat_nr, fat_n, fat_r;
n = (int) Long.parseLong(JOptionPane.showInputDialog ("digite valor de N"));
fat_n = 1;
for (i = 1; i<= n; i++){
fat_n = fat_n * i;
}
r = (int) Long.parseLong(JOptionPane.showInputDialog("digite o valor de R"));
fat_r = 1;
for(i =1; i<= r; i++){
fat_r = fat_r * i;
}
n_r = n-r;
fat_nr = 1;
for (i = 1; i<=n_r; i++){
fat_nr = fat_nr * i;
}
comb = fat_n/(fat_r * fat_nr);
JOptionPane.showMessageDialog(null, "A combinaçao numerica de N,R é:" + "\n" + comb );
}
}[/code]
so funciona com numeros de 1 a 20 ± lembrando que n deve ser sempre maior que r “esqueci de colocar essa parte no codigo”.